React JS - 解析复杂的 Json 结构并填充到下拉列表中
React JS - Parse a complex Json structure and Populate in a dropdown list
我得到如下后端数据结构。
{
"courseDetails" :
[{"departmentId" : 105654,
"courses" :
[{"stream" : "science","courseIds" : ["104","105","106"]},
{"stream" : "art","courseIds" : ["102", "103"]}]
},
{"departmentId" : 105655,
"courses" :
[{"stream" : "commerce","courseIds" : ["101", "100"]}]
}
]
}
在 UI 中,我有三个下拉列表。
Department ID | Stream | Course ID
第一个 Department ID 下拉列表应填充 departmentID 105654 和 105655。选择 department id 105654 时,Stream 下拉列表应填充为科学和艺术。从第二个下拉列表中选择科学时,课程 ID 应在第三个下拉列表中填充为 104、105、106。
上面的 json 数据结构是一次拥有所有数据,这样我就不必在每次选择下拉选项时都进行后端调用。
如何使用 React js 实现此目的?我是新手。
假设您在 data
中接收数据并且您的下拉组件每个都接受一个数组,该数组必须插入到它们各自的下拉菜单中,您将得到这样的数组:
const Department = data.courseDetails.map(obj => obj.departmentId);
现在假设您选择了一些 departmentId,您可以这样做:
const streams = data.courseDetails.filter(x => x.departmentId === departmentId)[0].courses.map(obj => obj.stream)
现在假设您将流存储在 streamId 中,您可以这样做:
const courseIds = data.courseDetails.filter(x => x.departmentId === departmentId)[0].courses.filter(x => x.stream === streamId)[0].courseIds;
您应该将每个数组存储在一个状态中,并将该状态作为 prop 传递给相应的下拉组件。
我想对 3 个下拉列表使用 3 个 react-select,并根据彼此的 selected 值将它们连接起来。状态看起来像您提供的数据和三个下拉字段的三个标志。
dropdown1: true, dropdown2: false, dropdown3: false
渲染结果如下:
{this.state.dropdown1 ? <Select options=[all the Department ID] onChange={handleSelectDepartment} />: null}
{this.state.dropdown2 ? <Select options=[course corresponding stream ] onChange={handleSelectStream} />: null}
{this.state.dropdown3 ? <Select optons=[Stream corresponding courseID ] onChange={handleSelectCourse} />: null}
所以首先 Department 的下拉列表将只可见。
在 select 在 Department 的下拉列表中设置一个值时,我会将 dropdown2 状态设置为 true 并且它将使 Stream 的下拉列表可见等等..
我得到如下后端数据结构。
{
"courseDetails" :
[{"departmentId" : 105654,
"courses" :
[{"stream" : "science","courseIds" : ["104","105","106"]},
{"stream" : "art","courseIds" : ["102", "103"]}]
},
{"departmentId" : 105655,
"courses" :
[{"stream" : "commerce","courseIds" : ["101", "100"]}]
}
]
}
在 UI 中,我有三个下拉列表。
Department ID | Stream | Course ID
第一个 Department ID 下拉列表应填充 departmentID 105654 和 105655。选择 department id 105654 时,Stream 下拉列表应填充为科学和艺术。从第二个下拉列表中选择科学时,课程 ID 应在第三个下拉列表中填充为 104、105、106。
上面的 json 数据结构是一次拥有所有数据,这样我就不必在每次选择下拉选项时都进行后端调用。
如何使用 React js 实现此目的?我是新手。
假设您在 data
中接收数据并且您的下拉组件每个都接受一个数组,该数组必须插入到它们各自的下拉菜单中,您将得到这样的数组:
const Department = data.courseDetails.map(obj => obj.departmentId);
现在假设您选择了一些 departmentId,您可以这样做:
const streams = data.courseDetails.filter(x => x.departmentId === departmentId)[0].courses.map(obj => obj.stream)
现在假设您将流存储在 streamId 中,您可以这样做:
const courseIds = data.courseDetails.filter(x => x.departmentId === departmentId)[0].courses.filter(x => x.stream === streamId)[0].courseIds;
您应该将每个数组存储在一个状态中,并将该状态作为 prop 传递给相应的下拉组件。
我想对 3 个下拉列表使用 3 个 react-select,并根据彼此的 selected 值将它们连接起来。状态看起来像您提供的数据和三个下拉字段的三个标志。
dropdown1: true, dropdown2: false, dropdown3: false
渲染结果如下:
{this.state.dropdown1 ? <Select options=[all the Department ID] onChange={handleSelectDepartment} />: null}
{this.state.dropdown2 ? <Select options=[course corresponding stream ] onChange={handleSelectStream} />: null}
{this.state.dropdown3 ? <Select optons=[Stream corresponding courseID ] onChange={handleSelectCourse} />: null}
所以首先 Department 的下拉列表将只可见。 在 select 在 Department 的下拉列表中设置一个值时,我会将 dropdown2 状态设置为 true 并且它将使 Stream 的下拉列表可见等等..