javascript - 如何从 API 声明数组来代替硬编码数组?
问题描述
我得到了一些硬编码数组的代码示例。我希望将它换成我的数组,该数组是使用 graphql 从 API 中提取的。下面是原始示例的代码笔和我尝试过的另一个无济于事的代码。
我对 graphql 和 js 很陌生,所以很可能是一个业余错误,任何指针都将不胜感激!
原始代码 - https://codesandbox.io/s/nice-saha-gwbwv
我的笔 - https://codesandbox.io/s/quiet-wind-brq8s?file=/src/App.js
解决方案
我会将您的组件结构更改为:
import React, { useState } from 'react'
import { graphql } from 'gatsby'
const YourPage = ({data}) => {
console.log('data is', data)
const [filters, setFilters] = useState({
type: "",
category: ""
});
//your calculations
return (
<div>
Your stuff
</div>
)
}
export const query = graphql`
query yourQueryName{
allStrapiHomes {
nodes {
type
category
}
}
}
`
export default YourPage
在您的代码中,在某些关键导入时,您会遗漏一些来自 Gatsby 的东西。如果您使用 a staticQuery
,则需要为其添加渲染模式。可能看起来有点老套,最好使用useStaticQuery
Gatsby 提供的 hook 或者添加页面查询(我的做法)。
我添加了一个页面查询。您的数据位于props.data.allStrapiHomes.nodes
,您省略了第一步的解构道具,因此您的数据将位于data.allStrapiHomes.nodes
. 如果它们在 Strapi 后端这样设置,两者type
和都将是一个数组。category
推荐阅读
- php - IF 语句 php 如果另一个为空则显示内容
- javascript - Yarn Install - 如何强制节点(10.xx)的最新次要版本和补丁
- javascript - 电子邮件的正文有 %20 而不是空格
- docker - 在运行 docker-compose up 时,它退出了错误代码 0
- java - R.java 文件中的“未解决的引用”错误
- c# - C# .net 核心通过属性重定向,无需在控制器操作中计算和运行代码
- reactjs - react-redux中调度函数后的回调函数
- java - Springboot App:考虑在你的配置中定义一个 bean 类型
- mysql - 如何在 MySQL dB 中搜索 JSON 以满足所需条件?
- reactjs - 如何创建没有 isKey 列/唯一列的反应引导表?