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;