IT

React redux의 감속기에서 배열에 요소를 추가 할 수 있습니까?

lottoking 2020. 7. 30. 09:36
반응형

React redux의 감속기에서 배열에 요소를 추가 할 수 있습니까?


arr[]감속기의 redux 상태 배열 요소를 어떻게 추가 합니까? 나는 제공하고있다.

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
    }
}

돌연변이없이 배열에 항목을 추가하는 두 가지 옵션

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

또는

case ADD_ITEM :
    return { 
        ...state,
        arr: state.arr.concat(action.newItem)
    }

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
     }
}


배열의 특정 위치에 삽입해야하는 경우 다음을 수행 할 수 있습니다.

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

샘플이 있습니다

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;

참고 URL : https://stackoverflow.com/questions/40911194/how-do-i-add-an-element-to-array-in-reducer-of-react-native-redux

반응형