2017-02-26 9 views
0

レデューサーのオブジェクト配列内の特定のインデックスを更新しようとしています。状態にはオブジェクトの配列があります。 isSearchはオブジェクトのプロパティです。アクションのペイロードで、私は更新されるインデックスと値を渡しています。これは私のコードです:Reduxでレデューサーのネストされた配列を更新する

case actions.UPDATE: 
    return { 
    ...state, 
    arrObj: { 
     ...state.arrObj, 
     arrObj[action.payload.index].isSearch : action.payload.isSearch, 
    }, 
    }; 

私は、このエラーUnexpected token, expected , at arrObj[action.payload.index].を取得誰かがどのように私はこれを修正することができますを教えてもらえますか?あなたが深いあなたの状態内の単一の値を更新するために探している場合

+0

だから、 'arrObj [action.payload.index] .isSearch:action.payload.isSearch、'はどういう意味ですか? – zerkms

+0

@zerkms私はarrObj [action.payload.index]オブジェクトにプロパティisSearch – funkadelic

答えて

0

、これを試してみてください。

case actions.UPDATE: 
    var newState = { ...state } 
    var arrayObj = newState.arrayObj = state.arrayObj.slice() 
    var element = arrayObj[action.payload.index] = { ...arrayObj[action.payload.index] } 
    element.isSearch = action.payload.isSearch 
    return newState 
+0

を割り当てていますが、これはうまくいかず、ブラウザがハングします。 – funkadelic

+0

ブラウザの問題を修正しました。しかし、国家は変わっていないようだ。要素はnewstateを返す間に何かに割り当てられません。 – funkadelic

+0

すでに 'action.payload.index'にオブジェクトがあるはずですか?そうでない場合は、上記のコードを変更する必要があります。 – gyre

0

は、私はあなたに大きな助けのnpm意志からimmutability-helperパッケージを推測し、ネストされたReduxの状態

を更新中
import update from 'immutability-helper'; 

....... 

case actions.UPDATE: 
    return update(state, { 
     arrObj: { 
      [action.payload.index]: { 
       isSearch: { 
         $set: action.payload.isSearch 
       } 
      } 
      } 
     }) 
関連する問題