0

使用 URQL 从 GraphCMS 中获取一个帖子 - URQL 创建一个如下所示的商店:

{
  "stale": false,
  "fetching": false,
  "data": {
    "post": {
      "title": "Technical SEO with GraphCMS",
      "date": "2020-05-05",
      "tags": [
        "SEO"
      ],
      "content": {
        "html": "<p>Lorem ipsum dolor sit amet</p>",
        "__typename": "RichText"
      },
      "coverImage": {
        "url": "https://media.graphcms.com/resize=fit:clip,width:600/hujVF2oRi2J1gDKdk0ic",
        "__typename": "Asset"
      },
      "__typename": "Post"
    }
  }
}

我想隔离 post 变量之后的部分。

当我尝试通过以下方式访问它时: $post.data 一切正常,但我仍然在输出中得到了“post”变量。
在我使用 $post.data.post 的那一刻,我得到了 500 错误 - 无法读取未定义的属性“帖子”

如何访问这个嵌套值?

4

1 回答 1

1

可能会触发该错误,因为您尝试$post.data.post在(异步)请求实际完成之前进行读取。

尝试添加条件,例如:

$: postData = $post.fetching ? undefined : $post.data.post

或者,如果您的项目设置为使用 ES11,您可以尝试使用可选链接:

$: postData = $post.data?.post

尽管我相信上面的第一种方法更好,因为它更好地表达了意图并且更具可读性。

于 2021-12-09T21:50:04.103 回答