【问题标题】:How to get state from one react component to another?如何从一个反应组件获取状态到另一个?
【发布时间】:2018-10-30 13:54:34
【问题描述】:

我是 ReactJS 的新手,这就是我来这里的原因。 我创建了一个组件“登录”并在 this.state 中有变量“isAuthenticated”。

用户登录后,我将此变量的值更改为 true,我的应用程序将用户重定向到主页。

在主页中,我必须检查“isAuthenticated”值,重新渲染组件取决于它。

但它不起作用。我收到错误:“无法获取未定义或空引用的属性 'setState'”。

请帮我解决这一切。

【问题讨论】:

    标签: reactjs react-router components


    【解决方案1】:

    如果您没有使用Redux 之类的东西进行状态管理,我建议您使用浏览器的localStorage 来存储isAuthenitcated 的值。类似的东西

    localStorage.setItem('isAuthenticated', true); - on login
    

    然后在你可以使用的其他组件中:

    localStorage.getItem('isAuthenticated'); - to figure out what you want to show
    

    记得在注销时也将 isAuthenticated 设置为 false!

    localStorage.setItem('isAuthenticated', false); - on logout
    

    【讨论】:

      【解决方案2】:

      我希望你会有如下的登录功能

      function login(){
         doLogin().then(function(data){
           this.setState({isAuthentcated: true});
        });
      }
      

      像这样使用 ES6 Arrow 函数将登录函数绑定到组件

      login = () => {
             doLogin().then((data) => {
               this.setState({isAuthentcated: true});
            });
          }
      

      【讨论】:

        猜你喜欢
        • 2018-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-12
        • 2020-11-25
        • 2019-10-18
        • 1970-01-01
        • 2021-02-05
        相关资源
        最近更新 更多