Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将变异状态传递到其他页面?_Javascript_Reactjs_React Router - Fatal编程技术网

Javascript 如何将变异状态传递到其他页面?

Javascript 如何将变异状态传递到其他页面?,javascript,reactjs,react-router,Javascript,Reactjs,React Router,在我的App.js中,我正在创建这样一个路由: <Route exact path='/tools/ndalink' render={(props) => ( <React.Fragment> <Header /> <LinkPage {...props} brokerID={this.state.brokerID}&

在我的App.js中,我正在创建这样一个路由:

        <Route 
          exact path='/tools/ndalink'
          render={(props) => (
            <React.Fragment>
              <Header />
              <LinkPage {...props} brokerID={this.state.brokerID}></LinkPage>
            </React.Fragment>
          )}
        />
(
)}
/>
state.brokerID最初为“”,但不久后更改,因此LinkPage将此.state.brokerID接收为“”


如何传递更改的state.brokerID(不使用Redux)?

您需要使用生命周期方法将道具发送到组件,以等待名为
componentdiddupdate
的道具

也就是说,如果您计划对
brokerId
进行变异,则只需使用此选项

因为这个过程是异步的,所以你必须等待道具被传递下来。直到屏幕上显示
加载
文本或进度条

class LinkPage extends React.Component {

  state = {
    builderId: ''
  };

  componentDidUpdate(prevProps) {
    if(this.props.builderId !== prevProps.brokerId) {
      this.setState({ builderId: this.props.brokerId });
    }
  }

  render() {
    return (
      <div className="App">
        <h1>{ this.state.builderId ? this.state.builderId : 'Loading' }</h1>

      </div>
    );
  }
}
<h1>{ this.props.builderId ? this.props.builderId : 'Loading' }</h1>
 componentDidUpdate(prevProps) {
    if(this.props.builderId !== prevProps.builderId) {
      this.setState({ builderId: this.props.builderId }, () => {
        //use this.state.brokerIdhere 
      });