Search code examples
reactjsreduxreact-reduxflux

How to push new value to Store object?


foodList : {
    'fruits' : ['apple', 'banana'],
    'hamburgers: ['bigmac', 'crispy']
}

In case of above data structure, How to add new kiwi to fruits in Redux?

case "FRUIT_ADD_SUCCESS" : 

    action.payload = 'kiwi';
    return { 
        ...state,

        // Cannot read property 'push' of undefined 
        foodList: state.foodList['fruits'].push(action.payload)

        // Disappear previous values 
        foodList: state.foodList['fruits'] = action.payload  
    }

How to push new value to Store object?


Solution

  • This should work:

    case 'FRUIT_ADD_SUCCESS':
      action.payload = 'kiwi';
    
      const newFoodList = {
        ...state.foodList,
        fruits: [...state.foodList.fruits, action.payload],
      };
    
      return {
        ...state,
        newFoodList,
      };