首页 > 解决方案 > componentWillReceiveProps() 不会重新触发发送新的道具

问题描述

我对做出反应还很陌生,我开始对构建自己的设计、访问 api 等感到满意......

我正在尝试显示注册页面的错误,并且我正在设置一个本地存储变量,其值是 django-rest-auth 在错误数据中返回的字符串。该部分工作正常(但是,如果您可以帮助我找到一种更有效/更直接的方法来从错误字符串中提取消息,将不胜感激。)

在我的注册组件中,使用 componentWillReceiveProps,然后我将组件的本地错误变量的状态设置为本地存储的错误变量的值。(再次,我知道这是一种糟糕的方法)

  componentWillReceiveProps() {
    const success = localStorage.getItem("signupSuccess");
    if (success !== null) {
      this.setState({ hasError: true });
      const usernameError = localStorage.getItem("usernameError");
      const emailError = localStorage.getItem("emailError");
      const password1Error = localStorage.getItem("password1Error");
      const password2Error = localStorage.getItem("password2Error");
      this.setState({ usernameError: usernameError });
      this.setState({ emailError: emailError });
      this.setState({ password1Error: password1Error });
      this.setState({ password2Error: password2Error });
    }
    localStorage.removeItem("usernameError");
    localStorage.removeItem("emailError");
    localStorage.removeItem("password1Error");
    localStorage.removeItem("password2Error");
    console.log(localStorage.getItem("usernameError"));
  }

主要问题是,如果错误发生变化(由于更正、新问题等......),错误不会在 Signup 组件中更新,我认为这是因为我选择了生命周期方法。

有人可以解释 componentWillReceiveProps 或我的任何一般误解吗?另外我应该使用什么生命周期方法,以便每次重新提交时它都会不断更新?

谢谢

标签: reactjsauthenticationreact-lifecycle

解决方案


推荐阅读