组件未在redux状态更改时更新

时间:2017-11-05 12:32:21

标签: react-native react-redux redux-saga

正如标题所说,我的组件连接到带有connect函数的redux商店,并没有触发针对特定案例的状态更改的更新,同时适用于其他案例。

正在修改的状态中的变量具有以下结构

state: {
  billDetails: {
    productType1: {...},
    productType2: {...},          
    productType3: {...},
    productType4: {
      accountId1 : [
        {invoiceNo:1, isChecked: true},
        {invoiceNo:2, isChecked: false}  
      ],
      accountId2: [...]
    }
  }
}

我正在尝试从成功发生的reducer中更改缺陷的值,因为我可以看到它在react-native调试器中发生了变化,但组件本身没有得到更新。

这是我的针对该特定情况的reducer代码的代码

{
  const { accountId, invoiceNo, isChecked } = action.payload;
  const billDetails = result(state.billDetail, `${action.payload.productType}.${accountId}`, []);
  const billDetailsModified = billDetails.map((bill) => {
    if (bill.invoiceNo === invoiceNo) {
      bill.isChecked = isChecked;
    }
    return bill;
  });
  const newState = Object.assign({}, state);
  newState.billDetail[action.payload.productType][accountId] = billDetailsModified;
  return newState;
}

使用billdetails

将组件连接到mapStateToProps函数中的billDetail: result(state, 'billUsage.billDetail', {})对象

1 个答案:

答案 0 :(得分:0)

Object.assign复制属性值,因此复制了对象引用,因此state.billDetail和newState.billDetail引用相同的对象。因此,您正在改变原始状态,这使状态为not updating