首页 > 解决方案 > 即使 props 未更改,我如何知道是否在 redux 中调用了调度?

问题描述

我有一个登录页面,我在提交表单时将登录详细信息发送到服务器。

服务器使用访问令牌或错误消息进行响应。

在这两种情况下,我分别调度 loginSucess 或 loginFailure 并将 isLoggedIn 属性设置为相应的状态。

  componentDidUpdate(prevProps: any) {
    // if (hasPropChanged("isLoggedIn", this.props, prevProps)) {
    const { isLoggedIn } = this.props;
    if (isLoggedIn) this.props.history.push("/admin");
    else {
      notification.open({
        message: "Login error",
        description: "Invalid login credentials"
      });
    }
    // }
  }

但问题是,如果用户第一次发送无效凭据,商店更新,我可以在前端显示通知。但是当 isLoggedIn 属性未更改时(用户连续多次发送无效凭据)组件不会重新渲染或再次更新。如何检测何时收到 api 响应并调用 dispatch?并相应地显示通知。

标签: reactjsredux

解决方案


您需要一个额外的道具(通常称为error或类似的)来模拟这种状态。然后它非常简单,您可以设置error为 true 或保存带有错误消息的字符串。或者,显示来自您的 redux 操作的通知,而不是来自组件的通知。


推荐阅读