2016-11-26 45 views
0

だから、私はテーブルの状態を持っています。状態の配列内のオブジェクトを更新するにはどうすればよいですか?

const initialState = { 
allTables: [], 
fetching: true, 
tableId: {}, 
}; 

allTablesは、テーブルのオブジェクトが多い状態です。

allTables: Array[16] 

であり、各オブジェクトは、id、current_order、tableのタイプを有する。

{ 
id: 1 
type: "main" 
current_order: null 
} 

これで、ユーザーがテーブルをクリックすると、注文が作成されます。私が追加したいのは、ユーザーがテーブルをクリックすると、order_idがレデューサーに送信され、テーブルオブジェクトのcurrent_orderが更新されるということです。

case Constants.TABLE_IS_BUSY: 
     return { ...state, tableId: action.id } 

    case Constants.TABLES_NEW_ORDER_CREATED: 
     return Object.assign({}, state, { 
      tables: state.allTables.map((id) => { 
       if (state.allTables.id === state.tableId) { 
        return Object.assign({}, { 
         state.allTables.current_order: action.order 
        }) 
       } 
       return state 
      }) 

     }) 

そうするために、私は上記のような減速機を作った。表をクリックすると、TABLE_IS_BUSYおよびTABLES_NEW_ORDER_CREATEDがトリガーされます。 TABLE_IS_BUSYについては、ユーザがクリックしたテーブルのtable_idを取得し、stateのtableIdの値を変更します。しかし、TABLES_NEW_ORDER_CREATEDの場合、current_userの値は変更されません。これを正しく行うにはどうしたらいいですか?事前に

おかげ..

答えて

1

は、あなたが何か必要はありません。

case Constants.TABLES_NEW_ORDER_CREATED: 
     return Object.assign({}, state, { 
      tables: state.allTables.map((table) => { 
       if (table.id === state.tableId) { 
        return Object.assign({}, table, { 
         current_order: action.order 
        }) 
       } 
       else { 
        return Object.assign({}, table) 
       } 
      }) 
     }) 
+0

おかげで、私は、IDの代わりにテーブルを置いている必要があります。.. –

関連する問題