web-dev-qa-db-ja.com

どのようにReactネイティブレデューサーのレデューサーで配列に要素を追加するのですか?

レデューサーでredux状態の配列arr[]に要素を追加する方法を教えてください。私はこれをやっています -

import {ADD_ITEM} from '../Actions/UserActions'
const initialUserState = {
    arr:[]
}

export default function userState(state = initialUserState, action)
{
    console.log(arr);
    switch (action.type)
    {
        case ADD_ITEM: 
            return { 
                      ...state,
                      arr: state.arr.Push([action.newItem])
                   }

        default:
            return state
    }
}
99
coderzzz18

変更なしでアイテムを配列に追加する2つの異なるオプション

case ADD_ITEM :
    return { 
        ...state,
        arr: [...state.arr, action.newItem]
    }

OR

case ADD_ITEM :
    return { 
        ...state,
        arr: state.arr.concat(action.newItem)
    }
247
free-soul

Pushは配列を返さず、配列の長さ( docs )を返すので、配列を配列の長さに置き換え、配列だけを失います。それを参照してください。これを試して:

import {ADD_ITEM} from '../Actions/UserActions'
const initialUserState = {

    arr:[]
}

export default function userState(state = initialUserState, action){
     console.log(arr);
     switch (action.type){
        case ADD_ITEM :
          return { 
             ...state,
             arr:[...state.arr, action.newItem]
        }

        default:return state
     }
}
20
martinarroyo

配列の特定の位置に挿入する必要がある場合は、これを実行できます。

case ADD_ITEM :
    return { 
        ...state,
        arr: [
            ...state.arr.slice(0, action.pos),
            action.newItem,
            ...state.arr.slice(action.pos),
        ],
    }
7
JoeTidee

サンプルがあります

import * as types from '../../helpers/ActionTypes';

var initialState = {
  changedValues: {}
};
const quickEdit = (state = initialState, action) => {

  switch (action.type) {

    case types.PRODUCT_QUICKEDIT:
      {
        const item = action.item;
        const changedValues = {
          ...state.changedValues,
          [item.id]: item,
        };

        return {
          ...state,
          loading: true,
          changedValues: changedValues,
        };
      }
    default:
      {
        return state;
      }
  }
};

export default quickEdit;
0
Long Nguyen Qui