我在redux(对象列表)中有状态,并且有一个将空白对象添加到列表中的操作。但是每当我分派动作时,React都不会响应更改后的道具。我尝试在componentDidUpdate
中登录控制台,但shouldComponentUpdate
却没有记录更改的道具。
这是行动
function addNewBlankObject() {
const newBlankObject= {
field1: "",
field2: ""
}
return {type:'ADD_BLANK_OBJECT', newBlankObject: newBlankObject}
}
这是减速器
case 'ADD_BLANK_OBJECT':
var listOfObject = state.listOfObject;
listOfObject.push(action.newBlankObject);
return state;
这是redux道具映射器
function mapStateToProps(state) {
console.log(state.listOfObject); //check if state updated
const listOfObject = state.listOfObject;
return {
listOfObject,
}
}
export default connect(mapStateToProps)(AComponent);
我尝试用上述方法记录道具,它会更新状态,将空白对象添加到列表中,因此道具被更改了吗?为什么React没有回应?是因为状态是数组吗?
最佳答案
状态引用它没有被更改。它保持不变。
Redux进行浅层比较以决定是否更新状态。
减速器的状态更新应该是这样的。
case 'ADD_BLANK_OBJECT':
return [
...state.listOfObject,action.newBlankObject
]
请找到
more here
关于javascript - 更新 Prop (对象列表)后不渲染,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51925584/