【问题标题】:Trying to rendering the options based on json data but getting map is not a function尝试基于 json 数据呈现选项但获取地图不是函数
【发布时间】:2022-01-29 01:48:43
【问题描述】:

我正在尝试获取基于品牌的模型。但是选择下一个选项时出现错误

错误说 bikeBrand 不是函数

下面是从后端获取的 Json 数据

response from backend { BMW:["F900R", "F900XR"], KTM:["125 Duke", "250 Duke"]}

然后在 React 中使用 useState 钩子存储状态

const [bikeBrands, setBikeBrands] = useState("")

第一个选项值也存储在下面的钩子中

const [selectedBrand, setSelectedBrand] = useState("")

问题出在第二个选择选项中。

<select onChange={(e) => setSelectedBrand(e.target.value)}>
                        <option>Choose brand</option>
                        {Object.keys(bikeBrands).map((bikeBrand, index) => {
                            return <option>{bikeBrand}</option>
                        })}
                    </select>
                    <select onChange={(e) => setModel(e.target.value)}>
                        <option>Choose Model</option>
                        {Object.keys(bikeBrands).map((bikeBrand, index) => {
                            bikeBrand.map((brandModels, index) => {
                                return <option>{brandModels}</option>
                            })
                        })}

                    </select>

【问题讨论】:

  • 您能粘贴您收到的实际错误吗?标题表明你得到的 map 不是一个函数,但在你的身体里你说你得到的 bikeBrands is not a function 两者都有非常不同的含义。您为 bikeBrands 设置的默认状态是什么?它是像上面那样的空字符串吗?如果是这样,这个错误就是因为这个; .map() 不是字符串上的函数,类似于错误状态。
  • bikeBrands.map 不是错误所说的函数。

标签: javascript reactjs selection map-function


【解决方案1】:

如你所愿

{Object.keys(bikeBrands).map((bikeBrand, index) => {
  bikeBrand.map((brandModels, index) => {
   return <option>{brandModels}</option>
  })
})}

请注意,Object.keys(bikeBrands) 为您提供了一系列键,这些单独的键(一次一个)存储在 bikeBrand 中。

这个bikeBrand 是一个变量,它保存字符串BMWKTM 而不是值。
所以不要写bikeBrand.map
使用bikeBrands[bikeBrand].map 访问数组值。

【讨论】:

  • 我试过了,现在没有错误显示,但我也得到了值。 {Object.keys(bikeBrands).map((bikeBrand, index) => { bikeBrand === selectedBrand && bikeBrands[bikeBrand].map((brandModels, index) => { return }) })}
  • 我尝试添加条件,但仍然无法获取值。
  • 还在选择标签中添加值属性[将值存储在useState]
  • 也添加了,但还是同样的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-28
  • 2020-05-02
  • 1970-01-01
  • 1970-01-01
  • 2021-05-27
相关资源
最近更新 更多