gpt4 book ai didi

javascript - 让 .filter 与 React.Js 中的 JSON 对象中的 .map 一起使用

转载 作者:太空宇宙 更新时间:2023-11-04 03:05:34 24 4
gpt4 key购买 nike

我正在尝试根据第一个下拉列表中选择的内容填充第二个下拉列表。

第一个下拉列表列出了下面 JSON 中的 tableName。我希望第二个下拉列表是所选 tableNamecolumns

目前,我只想查看其中 tableName == 'customer'的列表。

我尝试使用 .filter 方法和 .map 方法来完成此操作,但第二个下拉列表为空。这是我当前的代码:

import React from 'react';
import axios from 'axios';
class Search extends React.Component {
constructor(props) {
super(props)
this.state = {
Params: [],
ColumnParams: []
}
}
componentWillMount() {
axios.get('http://localhost:3010/api/schema')
.then(response => {
this.setState({Params: response.data})
})
}
render() {
return (
<div className="Search">
<select>{this.state.Params.map((param, i) =>
<option key={i}>{param.tableName}</option>)}
</select>
<select>{this.state.Params.filter(tn => tn === "customer").map(param =>
<option>{param}</option>)}

这是 JSON:

[
{
"tableName": "customer",
"columns": [
"customerid",
"title",
"prefix",
"firstname",
"lastname",
"suffix",
"phone",
"email"
]
},
{
"tableName": "product",
"columns": [
"productid",
"name",
"color",
"price",
"productadjective",
"productmaterial"
]
}
]

最佳答案

Params 在您的状态中是一个对象数组,但在您的过滤器中您试图将其与字符串进行比较。

尝试

.filter(({tableName}) => tableName === 'customer')
.map(({columns}) =>
columns.map((col) =>
<option>{col}</option>))}

相反。

关于javascript - 让 .filter 与 React.Js 中的 JSON 对象中的 .map 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41916295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com