2017-11-05 27 views
0

タイトルには、connect関数を使用してreduxストアに接続されているコンポーネントが、特定のケースの状態変更の更新をトリガしない場合があります。コンポーネントがredux状態で更新されない

修正されている状態での変数は、私はそれがreact-に変える見ることができるように首尾よく起こっている減速からにisCheckedのfalueを変更しようとしています

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', {})

+0

reduxが仕事をしていることを確認するためにredux状態をデバッグしましたか? – bitstrider

答えて

0

Object.assignコピープロパティ値ので、オブジェクトを使用mapStateToProps機能にbilldetailsオブジェクトに接続されています参照はコピーされるので、state.billDetailとnew​​State.billDetailは同じオブジェクトを参照します。したがって、元の状態に変更すると、状態はnot updatingになります。

関連する問題