Javascript 如何将变异状态传递到其他页面?
在我的App.js中,我正在创建这样一个路由: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}&
<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
});