javascript - 如何将字符串数组从 react 状态映射到选择框

标签 javascript python reactjs

我在第一个选择框中读取了一个 json 文件并将值设置为状态,但我不知道如何将该值读取到另一个选择框。我得到的只是整个数组作为一个字符串。

这是我将状态设置为第一个选择框的对象的代码:

constructor(props) {
    super(props);
    this.state = {
        selectedCourse: {}
        
    };
    this.onSelectCourse = this.onSelectCourse.bind(this);
}
onSelectCourse(e) {
    console.log(e.target);
    this.setState(
        {
            selectedCourse: {
                ...this.state.selectedCourse,
                [e.target.id]: [e.target.value]
            }
        },
        () => {
            console.log(this.state);
        }
    );
}

render() {
    const { selectedCourse } = this.state;

这是第一个选择框:

<select onChange={this.onSelectCourse}>{CoursesList.courses.map((item, i) =><option key={i} value={item.dates}>{item.name}</option>)}</select>

这是我要显示来自状态对象数组的数据的选择框:

<select>{Object.entries(this.state.selectedCourse).map((item) =><option key={item}>{item}</option>)}</select>

最佳答案

The Object.entries() method returns an array of a given object's own enumerable string-keyed property [key, value]

表示每个item.map函数是一个数组,例如 [key, value] .

我想你想做的是,

<select>
{Object.entries(this.state.selectedCourse)
  .map(
   ([key, value]) => (<option key={key} value={value}>{value}</option>)
  )
}
</select>

如果你只想要对象值而不是键,你可以使用 Object.values() 或逆 Object.keys() .


此外,在您的 setState您正在访问 [e.target.id]但是你的<option>标签没有 id属性集。


编辑:

正如 OP 所指出的,

But in my select box I still get: 2017-05-03,2018-02-01 (as one option)

我认为这可能是因为 item.dates在第一个选择字段中(<option key={i} value={item.dates}>{item.name}</option>)。是 item.dates数组 ?我建议您检查您的 JSON。

关于javascript - 如何将字符串数组从 react 状态映射到选择框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67357778/

相关文章:

javascript - 使用 IE 条件注释包含 CSS 或 JavaScript 文件会导致更多 http 请求

python - 让 NppExec 了解 Notepad++ 中当前文件的路径(对于 Python 脚本)

javascript - 使用 Redux 进行 React,组件无法识别从父级传递的属性

python - 在 python 中运行的脚本中关闭 GPU

javascript - 在 react 应用程序中更改 index.html 的路径

reactjs - 当使用 Material UI 样式将鼠标悬停在父级上时,如何更改子级的样式?

php - 将站点访问限制为仅 QR 扫描

javascript - 如何通过单击链接使用 JavaScript 提交表单?

javascript - 如何在水平滚动上添加平滑滚动效果?

python - 如何在Python中将列表的一部分转换为整数?