使用 next.js 使用 Sanity 訪問 Post Array 中的數組

孩子

我在嘗試訪問包含類別數組的 Post 數組時遇到問題。因此,如果我 console.log 數據,我會看到如下內容:

{
  posts: [
    {
      _createdAt: '2021-10-23T05:02:26Z',
      _type: 'post',
      _updatedAt: '2021-10-23T23:28:09Z',
      body: [Array],
      categories: [Array], <<<<-- this is the one I need to access
      mainImage: [Object],
      publishedAt: '2021-10-23T18:30:00.000Z',
      slug: [Object],
      title: 'Post Name title goes here'
    }
   .
   .
   .
  ]
}

我需要訪問 Post Array 中的類別 Array,但是我很難訪問它。我目前嘗試過這樣的事情:

 <div className="grid grid-cols-1 lg:grid-cols-3 gap-4">
  {posts.map(
    ({
      _id,
      title = "",
      slug = "",
      _createdAt = "",
      mainImage = "",
      categories = "",
    }) =>
      slug && (
        <div className="shadow-lg rounded-lg bg-white pb-5" key={_id}>
          <div className="px-6 py-4 text-left">
            <div className="flex flex-row mt-4 items-center">
              {categories && (
                <ul className="inline-flex my-3" style={{ listStyle: "none" }}>
                  {categories.map((category) => (
                    <li key={category}>
                      <span
                        className="mx-2 
                          items-center
                          justify-center
                          px-2
                          py-1
                          text-xs
                          font-bold"
                      >
                        {category}
                      </span>
                    </li>
                  ))}
                </ul>
              )}
            </div>
          </div>
        </div>
      )
  )}
</div>;

當我這樣做時,我收到以下錯誤:

對像作為 React 子對象無效(找到:帶有鍵 {_key, _ref, _type} 的對象)。如果您打算渲染一組子項,請改用數組。

我什至嘗試做這樣的事情:

{posts.categories.map((category) => (
    <li key={category}>
      <span
        className="mx-2 
            items-center
            justify-center
            px-2
            py-1
            text-xs
            font-bold"
      >
        {category}
      </span>
    </li>
  ));
}

但仍然沒有運氣。關於我做錯了什麼的任何想法?謝謝!

傑夫·鮑爾

從錯誤看來,它categories是一個引用數組。您需要解析 GROQ 查詢中的引用(類似於"categories": categories[]->),然後在前端,您需要使用每個對象的屬性category(在映射時創建categories)而不是整個對象本身。你會想像categories你所做的那樣進行映射,但在映射回調函數中,你永遠不會直接引用整個對象。

而不是:

{posts.categories.map((category) => (
    <li key={category}>
      <span>
        {category}
      </span>
    </li>
  ));
}

你會想要做類似的事情(假設一個text屬性存在):

{posts.categories.map((category) => (
    <li key={category._id}>
      <span>
        {category.text}
      </span>
    </li>
  ));
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 Newtonsoft 訪問對象內的數組

使用 Laravel 在 Json Return 中訪問數字鍵

如何使用 JSON 數據訪問自定義類型的數組(無 tableView)

無法使用 JS 訪問我的 html 文件中的“header”元素

如何使用 React 從本地存儲訪問對像數組

無法使用 PHP 訪問 JSON 數據

使用 MUI 訪問樣式組件內的道具

如何使用基於整數位置的索引訪問 MultiIndex 數據幀中的行

如何使用 node.js(express) API 調用訪問搜索參數並在 React 前端提供服務

如何從 getServerSideProps 中的 next.js 鏈接訪問參數和查詢字符串?

如何使用 next.js 在每 'n' 个 Post 之后在 Feed 中添加 Google Ads

Python:使用 Z3 數據類型訪問數組/列表的第一個元素

是否可以使用 Vue 2 在組件的數據部分中使用 ref 訪問 HTML 元素?

使用 JavaScript 訪問 JSON

使用 strcat 在 Matlab 中訪問變量

如何使用 Beautiful Soup 在 gridview 中訪問 div

如何在 react js [0] 中訪問數組的特定索引

C#:使用反射區分記錄中的 init 訪問器和 set 訪問器

訪問 Map 中的數組

如何在功能組件中使用 ref 訪問組件的方法

React 父組件道具無法在子組件中使用 forwardRef 道具訪問

在數組元素中訪問數組

使用VS Code调试Sanity exec

使用Strimzi外部訪問Kafka

使用 Foreach 回顯數組中的數組

訪問 Node.JS Post Request 的響應

使用多個表循環訪問數據庫(並返回 SUM)

如何使用 res.send() 從自己的 api 獲取和訪問數據

如何使用 useRef 鉤子訪問數據屬性值?