首页 > 解决方案 > 重定向后反应状态为空

问题描述

我对 React 和使用 Redirect 非常陌生,我正在尝试使用 React-Router 实现一个简单的两页应用程序。我想知道重定向到组件后如何初始化组件的状态。例如,我有以下从另一个页面重定向到的 View 组件:

class View extends Component {
  constructor(props) {
    super(props);
    this.setState({
      name: 'NAME'
    });
  }

  render() {
    return (
      <div>
       <p>Hello {this.state ? this.state.name : 'null'}<p>
      </div>
      );
  }
}

上面的组件null是从另一个页面渲染重定向到之后渲染<Redirect to="/View">的。我可能在这里遗漏了一些微妙的东西,但是我将如何正确初始化状态?

标签: reactjsreact-router

解决方案


您不应该调用setState()构造函数 - 组件在其生命周期的此时尚未安装。例如,参见这个 SO answer

反而:

  constructor(props) {
    super(props);
    this.state = {
      name: 'NAME'
    };
  }

推荐阅读