我正在学习react并努力根据从第一个下拉列表中单击哪个选项来填充第二个下拉列表。
我在下面包含了我的代码。
我认为问题在于我尝试设置this.state.selected = param.tableName
. 我认为这行不通,但我不确定用什么来代替。
我需要一个onClick
事件来将this.state.selected
变量更改为我认为选择的选项,然后检查何时tableName === selected
. 我还将在下面包含我的 JSON,以便上下文更加清晰。
import React from 'react';
import axios from 'axios';
class Search extends React.Component {
constructor(props) {
super(props)
this.state = {
params: [],
columnParams: [],
selected: ''
}
}
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} onClick={this.setState(this.state.selected ={param.tableName})}>
{param.tableName}
</option>)}
</select>
<select>
{
this.state.params
.filter(({tableName}) => tableName === selected)
.map(({columns}) => columns.map((col) =><option>{col}</option>))}
[
{
"tableName": "customer",
"columns": [
"customerid",
"title",
"prefix",
"firstname",
"lastname",
"suffix",
"phone",
"email"
]
},
{
"tableName": "product",
"columns": [
"productid",
"name",
"color",
"price",
"productadjective",
"productmaterial"
]
},