【问题标题】:Component not updating on redux state change组件未在 redux 状态更改时更新
【发布时间】:2017-11-05 12:32:21
【问题描述】:

正如标题所说,我的组件通过 connect 函数连接到 redux 存储,不会触发特定情况下的状态更改更新,而在其他情况下运行良好。

处于被修改状态的变量具有如下结构

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

这是我针对特定情况的减速器代码的代码

{
  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;
}

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

【问题讨论】:

  • 你有没有调试过你的 redux 状态以确保 reducer 能正常工作?

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


【解决方案1】:

Object.assign 复制属性值,所以对象引用被复制,所以 state.billDetail 和 newState.billDetail 引用同一个对象。因此,您正在改变原始状态,使状态变为not updating

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 2018-05-21
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 2018-09-21
    相关资源
    最近更新 更多