如何在 Sanity.io 中的 inputComponent 中检索引用的字段数据?

Hie*_*ham 5 reactjs sanity

在 Sanity Studio 中,我试图获取输入组件内的所有文档属性。按照这篇文章官方支持的方式获取文档内容我能够使用 withDocument HOC 来获取文档数据,但其中一些具有“引用”类型,因此我只能获取 _ref 和 _type 而不是整个对象。我怎样才能做到呢?

csu*_*ito 7

您可以使用解引用运算符 -> 来解引用值。因此,假设您有一个名为 book 的文档,其属性authors 是引用类型的数组。

您可以通过以下方式获取authors数组的值:

const books = await client.fetch(
`*[_type == "book"] {
   ...,
   authors[]->
 }`
)
Run Code Online (Sandbox Code Playgroud)

您可以查看有关 GROQ 查询的Sanity 文档以获取更多更好的信息。


Hie*_*ham 3

我已经通过使用 Sanity Client 解决了这个问题。

在您的组件中导入客户端:

import client from 'part:@sanity/base/client';
Run Code Online (Sandbox Code Playgroud)

在 GROQ 查询中使用 _ref 作为 _id 开始查询

...
componentDidMount = () => {
    client.fetch(`*[_type == "template" && _id == "<put _ref value here>"]{
      title,
      body
    }`).then(response => {
      console.info('RESPONSE', response);
    })
  }
Run Code Online (Sandbox Code Playgroud)