반응형
Redux에서는 상세 복사가 필요합니까?
아래 오브젝트는action.data중첩된 개체가 있습니다.address
{
name: 'Ben',
address: {
country: 'Australia',
state: 'NSW'
}
}
리듀서에서는 어떻게 하면 좋을까요?
const rootReducer = (state = initState, action) {
switch(action.type) {
switch RECEIVE_DATA:
return {...state, data: action.data}
}
}
위와 같이 해도 될까요?내가 그냥 모든 대상을data복사하지 않고요?
또는
const rootReducer = (state = initState, action) {
switch(action.type) {
switch RECEIVE_DATA:
const address = {...action.data.address}
const data = {...action.data, address}
return {...state, data}
}
}
아니면 오브젝트를 상세하게 복사하여data?감사합니다.
중첩된 데이터의 업데이트를 "올바른" 방법으로 처리하는 방법은 중첩 수준별로 하나씩 여러 개의 얕은 복사본을 사용하는 것입니다.첫 번째 예에 따라 하나의 필드를 완전히 대체하는 새 개체를 만드는 것도 좋습니다.
불변 업데이트를 올바르게 수행하는 방법에 대한 자세한 내용은 "불변 업데이트 패턴"의 Redx 문서 섹션과 딥 클로닝에 대한 Redux FAQ 항목을 참조하십시오.
Redux에서:
일반적인 Redux 오해: 상태를 완전히 복제해야 합니다.현실: 내부에 변화가 없으면 참조를 동일하게 유지하십시오!
아니요, Unchanged 속성의 얕은 복사입니다.
변경된 속성은 새 값이 되므로 복사 유형에 대한 질문은 없습니다.
코드에서는 다음과 같이 달성합니다.return {...prevState}
어레이에서 항목을 하나만 변경하는 경우 Redux 문서에서는 array.map을 사용할 수 있다고 하지만 인덱스를 알고 있는 경우 이 방법이 더 빠릅니다.
state[action.args.index] = {
...state[action.args.index],
disregardLeafNode: action.args.checked
}
return state
언급URL : https://stackoverflow.com/questions/43151622/in-redux-is-it-necessary-to-do-deep-copy
반응형
'programing' 카테고리의 다른 글
| Java Spring Security - 사용자.withDefaultPasswordEncoder()는 권장되지 않습니다. (0) | 2023.03.11 |
|---|---|
| AngularJs의 날짜 필터별 내림차순 (0) | 2023.03.11 |
| 왜 잭슨 2는 첫 번째 대문자를 인식하지 못하는가? 낙타의 경우 단어 길이가 한 글자밖에 되지 않는데? (0) | 2023.03.11 |
| Angular 체크박스와 ng클릭 (0) | 2023.03.11 |
| MongoDB가 모든 쿼리를 로깅합니다. (0) | 2023.03.11 |