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

How to retrieve a referenced field data inside inputComponent in Sanity.io?

在 Sanity Studio 中,我试图在输入组件中获取所有文档的属性。按照这篇文章 An officially supported way to get at the document content 我能够使用 withDocument HOC 来获取文档数据,但是其中一些具有 "reference" 的类型因此我只能获取 _ref 和 _type 而不是整个对象。我怎样才能做到?

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

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

import client from 'part:@sanity/base/client';

开始使用 _ref 作为 GROQ 查询中的 _id 进行查询

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

您可以使用解除引用运算符 -> 解除对值的引用。因此,假设您有一个名为 book 的文档,其中包含 属性 个作者,它是一个引用类型数组。

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

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

您可以查看 Sanity's docs GROQ 查询以获得更多更好的信息。