programing

redex 비동기 액션에 callBacks를 전달하는 것이 좋은 프랙티스로 간주됩니까?

abcjava 2023. 2. 25. 19:29
반응형

redex 비동기 액션에 callBacks를 전달하는 것이 좋은 프랙티스로 간주됩니까?

성공/오류 응답에 대해 다른 알림 바를 표시하는 경우 다음과 같이 리액트컴포넌트 내의 redux 비동기 액션에 2개의 콜백을 전달합니다.

<Button
  onClick={e => this.props.actions.asyncAction(item, this.showSuccessBar, this.showErrorBar)}
/>

여기서 asyncAction은 다음과 같습니다.

export function asyncAction(item, successCallback, errorCallback) {
  return (dispatch, getState) => {
    dispatch(requestItem(item));
    return fetch("api.some_url/items/item")
      .then(response => response.json())
      .then(json => {
        if (json.success) {
          dispatch(receivePostsSuccess(reddit, json));
          successCallback();
        } else {
          dispatch(receivePostsFail(reddit, json));
          errorCallback();
        }
      });
    }
  };
}

이것은 패턴에 반하는 것입니까?즉, 알림 바는 callBack이 아닌 상태 변화에 따라 열어야 합니까?

무늬 자체는 괜찮습니다.이 알림이 구성 요소에 대한 로컬 알림인 경우 Redux를 통해 배선하지 마십시오.

그것은 당신이 이미 약속을 돌려주고 있기 때문에 콜백은 전혀 불필요하다고 말하고 있습니다.완성될 때까지 기다려 주세요.

this.props.dispatch(asyncAction(item)).then(onSuccess, onFailure);

그러나 이러한 알림 표시줄이 있는 구성 요소가 많은 경우 현재 알림을 유지하고 작업에 반응하는 환원 장치를 사용하는 것이 좋습니다.

이것은 쌍방향 데이터 흐름으로 플럭스의 첫 번째 법칙을 깨는 것입니다.

나는 smth라는 이름의 가게를 다음과 같이 분리할 것을 제안한다.NotificationStore그 주위에 통지 인프라스트럭처를 구축합니다.콜백을 사용할 수 있지만, 향후 큰 문제가 발생할 수 있습니다.

언급URL : https://stackoverflow.com/questions/33138045/is-it-considered-good-practice-to-pass-callbacks-to-redux-async-action

반응형