gpt4 book ai didi

javascript - React - 如何使用本地 .json 文件中的数据根据​​另一个选择菜单的值填充一个选择菜单

转载 作者:行者123 更新时间:2023-11-29 15:58:25 25 4
gpt4 key购买 nike

我尝试使用 React v16 中本地 .json 文件中的数据,根据选择菜单“对象类型”的值更改选择菜单“对象子类型”的内容

例如:如果我在“对象类型”选择菜单中选择一种植物,那么它会在“对象子类型”选择菜单中显示芦荟、仙人掌和玫瑰。

我有一个data.json

{
"object": [
{
"objectType": "Plant",
"objectSubtype": ["Aloe","Cactus","Rose"]
},
{
"objectType": "Animal",
"objectSubtype": ["Cat","Dog","Dolphin"]
},
{
"objectType": "Stone",
"objectSubtype": ["Granite","Marble","Travertine"]
}
]
}

我有 Object.js

import React, { Component } from "react";

class Object extends Component {
constructor() {
super();

this.state = {
objectType: "",
objectSubtype: ""
};
this.onChange = this.onChange.bind(this);
}
onChange(e) {
this.setState({ [e.target.name]: e.target.value });
}

render() {
return (
<form>
<div className="form-group">
<select
id="objectType"
multiple={false}
className="form-control"
value={this.state.objectType}
onChange={this.onChange}
>
<option>Select an object type</option>
</select>
</div>
<div className="form-group">
<select
id="objectSubtype"
multiple={false}
className="form-control"
value={this.state.objectSubtype}
onChange={this.onChange}
>
<option>Select an object subtype</option>
</select>
</div>
</form>
);
}
}
export default Object;

我的目标是使用本地文件 data.json 中的数据填充两个选择菜单并根据选择菜单“对象类型”中的值填充第二个选择菜单“对象子类型”。怎么可能?

最佳答案

对于第一个选择“objectType”,设置如下选项

let objectOption = []
data.object.forEach(x=>objectOption.push(x.objectType))

并循环遍历第一个选择选项。在此选择中更改值时,您需要设置第二个状态变量,即 objectSubtype

为此,您可以将 onChangeHandler 传递给您的第一个 Select 并从此处设置第二个状态。

onObjectChange = (value) => {
// TODO: handle for null value as well
let subTypeValue = data.object.filter(x=>x.objectType===value)[0].objectSubtype
this.setState({objectType:value, objectSubtype:subTypeValue})
}

你的第二个 Select 可以有自己的 onChangeHandler,可以很简单

onSubObjectChange = (value) => {
this.setState({objectSubtype:value})
}

关于javascript - React - 如何使用本地 .json 文件中的数据根据​​另一个选择菜单的值填充一个选择菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55866738/

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