나는 프런트 엔드에서 react + redux로 일했습니다. 우리 모두가 REDUX logic.Pratically 사업을 호스팅을 담당하는 컨테이너 구성 요소를 만들 것을 아시다시피React + Redux + thunk에서 비즈니스 로직을 구성하는 방법
, 우리는 우리가 얻을 이벤트를 전달 할 수mapDispatchToProps와 espetially, mapStateToProps 및 연결 기능 mapDispatchToProps을 제공 할 것입니다 감속기가 크게 작용합니다.
많은 종류의 유형이 있고 각 단계에는 10 단계 이상이 있으므로 "다음 단계", "이전 단계"명령을 구성하고 유효성 검사와 같은 자식 요소 기능을 호출하려고합니다. 이 버튼을 클릭하십시오. 그러나 나는 "ref"가 추천 된 방법이 아니라고 생각합니다. 그러나 REDUX의 원래 디자인, 나는 아래의 코드에서 이벤트를 전달합니다
const mapDispatchToProps = (dispatch, ownProps) => ({
onNext:() => {
dispatch(nextStep());
}
}
어디 REDUX 디자인 자식 컨트롤의 유효성 검사 문제이다를 호출하는 방법을, 어쩌면 우리가 행동 작성자에 처리해야하지만, 나는 그것이 asyn 요청이나 단순한 객체를 가진 액션이라고 생각한다. 로직을 처리해서는 안된다. "어떻게 동작 하는가"를 처리 할 컨테이너 객체를 소개하기 때문이다.
그래서 나는 다음과 같이 자식 컨테이너에 컨트롤러를 노출 :export {
childContainer,
childNavController
};
자식 요소 및 논리를 렌더링하는 데 사용되는 아이 컨테이너, childNavController 유효성 검사 기능을 노출 할 수 있습니다. 그러나이 방법으로 우리는 파견 개체에 액세스 할 수없는, 그래서 나는 다음을 수행하십시오 나는 또한이 이해하는 방법입니다
const nextStep=(childCreator)=>{
return function (dispatch, getState) {
return Promise.resolve().then(()=>{
const currentState = getState();
const controller=childCreator(currentState.step);
// this make the business also can work with dispatch object
controller.validation(dispatch,getState);
});
}
}
있지만 : 액션 만든 파일에서
const mapDispatchToProps = (dispatch, ownProps) => ({
onNext:() => {
dispatch(nextStep(wizardCreator));
}
}
const wizardCreator= (step) => {
// according to the step reuturn different controller instance
return childNavController;
};
그것이 이상하게 생각했다, 아니 OO, 아니 우아한 디자인, 그냥 작동 시키십시오.
그래서이 시나리오에 대한 제안이나 제안이 있다면?
실제로 REDUX의 용기 REDUX 의해 연결 기능에 의해 발생된다. 물론 코드의 컨테이너는 표현 구성 요소입니다. 컨테이너 구성 요소를 사용할 수 있지만 여기서는 복잡한 UI를 2 개의 파일로 분리해야합니다. 하나는 프레젠테이션이고 다른 하나는 논리 만 포함하면됩니다. 파일은 연결 결과 만 내 보냅니다. 그런 경우 합리적으로 디스패치 및 상태를 얻는 방법 (mapDispatchToProps가 아님). – RonSmith