我在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/

10-12 12:30
查看更多