【发布时间】:2021-06-16 18:41:16
【问题描述】:
我正在为我的 react 应用程序的下拉菜单列表而苦苦挣扎。
问题是,我有一个 API,其中一个键 (key3) 具有逗号 (,) 分隔值,我想在下拉列表中显示这些值。 API 响应如下所示
{
"key1": "user",
"key2": "user",
"key3": "abc,def,ghi"
}
我为此 API 响应创建了一个 reducer,并尝试使用 .map() 函数来处理 key3,大致如下:
{this.props.activeRole.key3.map((r)=> <option>{r}</option>)}
但是 React 会抛出一个错误为Cannot read property 'map' of undefined。
在哪里使用带有 .split() 的道具完全可以。然后它会产生冗余。
<option>{this.props.activeRole.key3.split(",")[0]</option>
<option>{this.props.activeRole.key3.split(",")[1]</option>
<option>{this.props.activeRole.key3.split(",")[2]</option>
假设 .split() 也可以,所以我在选择该选项时创建了一个动作创建器。
const selectedRoleAction = (role) => {
return {
type: "ROLE_SELECTED",
payload: role,
}
};
export default selectedRoleAction;
但是在调用这个动作减速器时,所选角色没有变化。下拉值变化时如何保存值?
<select className="form-control" onChange={() => this.props.selectedRoleAction((e)=>e.target.value)}>
<option value={this.props.activeRole.role.split(",")[0]>
{this.props.activeRole.role.split(",")[0]}</option>
<option value={this.props.activeRole.role.split(",")[1]>{this.props.activeRole.role.split(",")[1]}</option>
<option value={this.props.activeRole.role.split(",")[2]>{this.props.activeRole.role.split(",")[2]}</option>
</select>
请帮助...考虑到任何 .map() 或 .split() 方案,我会接受任何建议。
【问题讨论】:
标签: javascript reactjs react-redux