【发布时间】:2019-04-17 10:50:23
【问题描述】:
我制作了一个包含两个下拉列表的组件。第二个下拉菜单中的选项应该根据第一个下拉菜单中的选定选项进行过滤。
现在,我想映射一个存储在 const 中的过滤数组,类似于我映射 options1 的方式:
render() {
const options1 = [
{value: 'one', label: 'One'},
{value: 'two', label: 'Two'}
];
const options2 = [
{value: 'one-a', label: 'One A', link: 'one'},
{value: 'one-b', label: 'One B', link: 'one'},
{value: 'two-a', label: 'Two A', link: 'two'},
{value: 'two-b', label: 'Two B', link: 'two'}
];
const filteredOptions = options2.filter(o => o.link === this.state.selectedOption.value);
return (
<div style={style}>
<div>
<label>Select one</label>
<select
value={this.state.selectedOption.value}
onChange={this.handleChange1}
>
{options1.map(tag => <option>{tag.value}</option>)}
</select>
</div>
<div>
<label>Then the other</label>
<select
value={this.state.selectedOption2.value}
onChange={this.handleChange2}
>
{filteredOptions.map(tag => <option>{tag.value}</option>)}
</select>
</div>
</div>
)
}
options1 的第一个映射工作得很好。但是,对于过滤选项的映射,我的选择标记被渲染为空。
我不知道为什么它不起作用。有人碰巧有想法吗?
【问题讨论】:
-
this.state.selectedOption是如何初始化的? -
我认为 this.state.selectedOption 由于某种原因是空的,请您分享完整代码
-
@OriEng 我在我的问题中添加了指向完整代码的链接。
-
@Emilie 你能告诉我你在这里得到了什么价值吗? handleChange1(selectedOption) ,我的意思是当您更改选择时的“selectedOption”是什么?我认为这是错误的值,您唯一需要更改的是 selectedOption.target.value
标签: javascript reactjs dictionary filter render