2017-09-12 1 views
-2
case SET_WINE_ITEMS: 
    const { index, name, value } = action.payload 
    const items = state.items 
    items[index][name] = value 
    return { ...state, items } 

위의 코드를 구현하는 데 스프레드 연산자를 사용하는 간결한 방법이 있습니까?배열의 객체에서 한 필드를 변경하는 스프레드 연산자 ES6

+1

하지 대답,하지만 단지 피드백 :

items: [{ name: '', code: '', quantity: '', netBottlePrice: '', netCasePrice: '', caseSize: '', volume: '', volumeUnit: '', amount: '' }] 

나는 확산 연산자를 사용하여 돌연변이없이 REDUX 상태를 업데이트 달성 할 수있는 방법을 발견했다. 'items [index] [name] = value'에서 당신은 redux 상태를 돌연변이시키고 있습니다. 추천하지 않습니다. 먼저 배열을 복사하고 싶을 것이다.'const item = [... state.items]'; 그렇다면'items [index] [name] = value'; – jonahe

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator – Gopinath

+0

상태 개체에 대한 자세한 정보가 필요합니다. –

답변

0

의견을 보내 주셔서 감사합니다. 내 객체 배열의 구조는 items 배열에 많은 객체가있을 수있는 아래에 있습니다.

case SET_WINE_ITEMS: 
    const { index, name, value } = action.payload 
    const item = { ...state.items[index], [name]: value } 
    const items = [...state.items.slice(0, index), item, ...state.items.slice(index +1) ] 
    return { ...state, items } 
관련 문제