먼저 이것이 변형 된 상태 변경임을 이해합니다. 나에 대한 수치심을 안다. 때로는 올바른 방법이 가장 똑똑한 것처럼 보이지 않거나 나는 적어도 더 잘 알지 못합니다.Redux 감속기 동적 키 주입
미리 정의 된 항목에 대해 이전 상태와 새 상태를 만들고 교환하지 않고 키를 내 상태에 삽입하지는 않겠습니다. 나는 잠시 동안 키를 주입하기 만하면되고, 그렇지 않다면 어쨌든 모두 제거됩니다.
{graphSite: {site: "default", graphBrowser: { graphID: '', graphKey:'' }, browsable:[] }};
내 감속기는 다음과 같습니다처럼 내 초기 상태는 ** 사용 바벨 ES7이 확산 운영자가
case BROWSER: { state.graphSite.browsable[action.id] = action.payload
return {...state}
}
그래서이 작동하지만 것이다 오브젝트 보이는 검색 가능한 배열이 불구 상태 변화를 보여 나던 REDUX 개발 도구 도구에서 제대로
case BROWSER: { state.graphSite.browsable[action.id] = action.payload
return {...state,
graphSite: {...state.graphSite,
graphBrowser: {...state.graphSite.graphBrowser},
browsable: {...state.graphSite.browsable} }
}
}
현재 검색 가능한 프로그램,하지만 이상적으로 나는 이것들이들 수 있습니다 : 그래도 난 성미에 갔기 때문에 I가 변경을 연장하는 경우 접근은 아마도이있다 너.
그래서 초기 저장 상태가 아닌 동적 키의 상태를 조작하는 가장 좋은 방법은 무엇입니까? 이것은 내가 원래 상태를 조작했기 때문에 내가 뭔가 잘못하고있는 것처럼 느껴집니다.
당신은 상태 자체를 변형시키고 있습니다. 'state.graphSite.browsable [action.id] = action.payload'. 당신은 상태의 깊은 사본을해야하고, 당신이하는 방식대로 복사본을 변형시킨 다음 사본을 돌려 주어야합니다. – xiaofan2406
액션 id가 충분히 동적 일 것을 원했고, 가능한 초기 상태를 추적 할 필요가 없었습니다.문제는 원본을 돌연변이시키고 새로운 것으로 돌려 보내지 않는 한 복사 할 것이 없다는 것입니다. 그렇지 않으면 id는 정상적인 객체를 펼치고 조각을 변경하려고합니다. 이것은 주로 키를 위함이었습니다. 왜냐하면 배열이라면 비동기 호출의 순서를 보장 할 수 없기 때문입니다. – JustDave