【发布时间】:2019-08-25 23:05:28
【问题描述】:
对于一个学习和测试项目,我试图从 reducer 返回不可变的 redux 数据,因为组件数据是安全的。这是我的减速器代码:
function itemsReducer(state = [], action) {
switch(action.type) {
case 'ITEMS':
return [...action.data]
default:
return state
}
}
这是我的循环代码:
<ul>
{
this.props.items.map((item) => (
<li>{item.name.first} {item.name.last}</li>
))
}
</ul>
现在一切正常,但在使用此方法更改道具后:
change() {
this.props.items[0] = 'empty'
}
在再次加载项目后出现此错误:
TypeError: Cannot read property 'first' of undefined
显然,这些项目在我的减速器中没有使用扩展语法复制,所有更改都覆盖了它。在所有索引处执行数据加载操作后 #0 为 'empty'
谢谢
【问题讨论】:
-
用Immutable JS怎么样?
-
你是如何调度动作的,以及在 action.data 中传递了什么?存储中的数据是如何传递给组件的?您的问题可能来自很多地方,请添加更多详细信息
-
@Oliver 我已经映射了 dispatch 并且 action.data 来自我的操作
标签: javascript reactjs redux react-redux immutability