연관 배열이 있습니다.
키 (숫자)와 값 (개체)입니다.
이 배열의 상태를 그대로 유지해야합니다. 하나의 개체 속성 만 업데이트하면됩니다. 배열의
예 :연관 배열에서 중첩 된 객체의 특정 속성 하나만 업데이트하는 방법
5678: {OrderId: 1, Title: "Example 1", Users: [{UserId: 1}, {UserId: 2}, {UserId: 3}]}
5679: {OrderId: 2, Title: "Example 2", Users: [{UserId: 1}, {UserId: 2}, {UserId: 3}]}
나는 Users
배열 속성을 업데이트해야합니다.
나는이 시도했지만 작동하지 않습니다
ordersAssociativeArray: {
...state.ordersAssociativeArray,
[action.key]: {
...state.ordersAssociativeArray[action.key],
Users: action.updatedUsers
}
}
이 데이터는 감속기 안에 있습니다.
어떻게 수정 했습니까?
도움이 될만한 것.
하기 전에 :
ordersAssociativeArray:Array(22) > 5678: Order {OrderId: ...}
후 : 내가 크롬의 값을 검사 할 때
나는 위의 내 코드의 실행 후 이전 값과 값 확인에
ordersAssociativeArray: > 5678: {OrderId: ...}
솔루션 (코드 내 감속기)
let temp = Object.assign([], state.ordersAssociativeArray);
temp[action.key].Users = action.updatedUsers;
return {
...state,
ordersAssociativeArray: temp
}
이 코드는 정상적으로 작동합니다. 하지만 왜 아직도 이해가 안되나요? 그래서 해결책이 있지만 누군가가 나에게이 방법이 왜 효과가 있고 왜 그렇지 않은지를 설명 할 수 있다면 좋겠습니까?
내가 initialy이 연관 배열에 물건을 올려 어떻게 여기에 도움이 될 수있는 경우 :
ordersAssociativeArray[someID] = someObject // this object is created by 'new Order(par1, par2 etc.)'
감속기에 코드를 제공해 주시겠습니까? 실행중인 기능입니까? –
원래 ordersAssociativeArray 유형은 무엇입니까? 배열 인 것 같아? 배열 인 경우 배열을 사용하여 데이터를 병합해야합니다. –
당신은'immutability-helper' (https://github.com/kolodny/immutability-helper) – palsrealm