簡體   English   中英

將callBacks傳遞給redux異步操作被認為是一種好習慣嗎?

[英]is it considered good practice to pass callBacks to redux async action?

我想顯示成功/錯誤響應的不同通知欄,我將兩個callBacks傳遞給我的react組件中的redux異步操作,如下所示:

<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();
        }
      });
    }
  };
}

這是否反對這種模式? 換句話說,應該根據狀態更改而不是callBacks打開通知欄?

這種模式本身就很好。 如果這是組件本地的通知,請隨時通過Redux進行連接。

這說回調是完全沒必要的, 因為你已經回復了承諾。 等待它的完成。

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

但是,如果您有許多具有此類通知欄的組件,則最好讓reducer保留當前通知並對操作做出反應。

這將是雙向數據流,這打破了第一個流量規則。

我建議將名為smth的商店分開,如NotificationStore並圍繞它構建通知基礎架構。 您可以使用回調,但這是將來遇到大問題的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM