如何在不改变状态的情况下对 redux 动作做出反应

How to react to redux action without changing state

如何在不实际更改状态的情况下使 redux 操作生效?

我正在将现有代码移植到 redux:单击注销按钮时,现有函数 logout() 发出 AJAX 请求以注销用户。如果该请求失败,它会调用 alert('Logout failed'); 在移植的代码中,注销按钮会调用一个使用 redux-thunk:

实现的动作创建器
export function logout(email, pass, callback) {
  return function(dispatch) {
    axios.get('/logout')
      .then(function(response) {dispatch({type: 'LOGOUT_SUCCESS'})})
      .catch(function(error) {dispatch({type: 'LOGOUT_FAILURE', message: error.response.data})});
  };
}

reducer 处理 LOGOUT_SUCCESS 操作并从状态中删除用户对象,这很简单。但是我应该处理失败案例并触发 alert()?

如果您希望通过事件触发动作但不更改状态,并且希望动作创建者无法接收到它,那么哪种模式才有意义?

如果登录失败时唯一发生的是警报,只需在该函数中调用它即可。

记住,React 很简单JavaScript,不要试图强迫自己接受一种意识形态;这些模式是指南而非规则。

您可能想查看 redux-saga,它以比 thunk 更明确的方式处理 redux 的副作用。