2016-07-12 1 views
2

하위 축소 기가 자체 하위 상태를 업데이트 할 때 상위 상태에서 작은 양의 데이터를 알아야하는 상황에 처해 있습니다. 부모 감속기가 호출 된 것보다 하위 감속기에 다른 동작을 전달하는 것이 좋은 생각입니까?sub-reducers에 전달 된 동작을 unidiomatic으로 영구 변경하고 있습니까?

분명히 말하면 원래 작업을 돌연변이 화하는 것이 아니며 추가 데이터를 추가하기 위해 약간 수정 된 새 작업을 만들 것입니다. Redux 문서는 작업을 변경하지 말 것을 말하지만 다른 작업을 전달하는 것에 대해서는 언급하지 않습니다.

예를 들어 ADD_TO_CURRENT_INDEX이라는 액션이 ​​배열 및 "현재"인덱스를 저장하는 루트 축소기에 전달됩니다. 이 레벨의 현재 색인을 알고 있으므로 어레이의 하위 감속기에 새로운 작업 ADD_TO_THIS_SPECIFIC_INDEX을 보내면됩니까?

답변

1

개념은 확실히 조금 이상하지만, 내가 알 수있는 한 유효합니다. 루트 감속기 기능은 전체적으로 기본 감속기 규칙 (state, action) -> newState 및 불변의 데이터 업데이트를 준수해야하지만 Redux는 감속기 기능의 내부가 실제로 어떻게 구현되는지는 신경 쓰지 않습니다. 특정 기능을 호출하여 다른 기능을 호출하고 실제 작업이 아닌 "새로운"작업을 전달하려는 경우, 동작이 일관적이고 반복적으로 반복되는 한 괜찮습니다.

-1

하위 감속기에서 해당 조치 유형을 처리 할 수 ​​있습니다. (질문을 잘못 이해 했습니까?)

감속기 기능 내에서 작업을 보내려는 경우 오류가 발생할 수 있습니다. 세부 정보보기 here

업데이트 : 감속기 기능에서 작업을 디스패치 할 수 없습니다. 하지만 redux-thunk과 같은 미들웨어를 사용하여 액션 제작자로부터 배수 액션을 보낼 수 있습니다.

따라서 하나의 감속기에서 하위 감속기로 작업을 보내지 않고 이러한 작업을 모두 썽크에서 파견 할 수 있습니다. 부모 감속기에서 필요한 정보를 다시 계산하고 작업 페이로드에 포함시킬 수 있습니다.

또한 상태가 다른 조각에서 직접 파생 될 수있는 조각 인 경우 상태 트리 디자인에 대해 다시 생각해 볼 수 있습니다.

+0

죄송합니다. 나는 감속기가 ADD_TO_CURRENT_INDEX와 같은 액션을 수신하고 현재 인덱스가 이전 상태에서 무엇인지 읽은 다음 페이로드에 현재 인덱스가있는 새 액션 ADD_INDEX을 하위 감속기에 전달하는 경우 (다른 하위 감속기는 원래 색인). –

+0

@RahatAhmed 업데이트를 참조하십시오. 기본적으로 당신은'redux-thunk'로 원하는 것을 쉽게 얻을 수 있습니다. 감속기 함수 내에서 액션을 디스패치 할 필요가 없습니다. – xiaofan2406

+0

아직 액션을 디스 패칭하는 것에 대해 이야기하고 있지 않습니다. 하위 감속기에 조치를 전달하는 것에 대해 논의하고 있습니다. –