Reactjs 在componentDidUpdate上设置状态到窗口变量一次
我试图在我的Reactjs 在componentDidUpdate上设置状态到窗口变量一次,reactjs,components,Reactjs,Components,我试图在我的componentdiddupdate函数中将我的状态设置为全局变量。然而,这正在创建一个无限循环。我已经使用previousProps防止了这种情况,并针对其他情况检查了this.props,但在这种情况下,如何根据窗口变量只设置一次状态 componentDidUpdate(window.globalVar) { if (window.globalVar) { this.setState({ lorem: window.global
componentdiddupdate
函数中将我的状态设置为全局变量。然而,这正在创建一个无限循环。我已经使用previousProps
防止了这种情况,并针对其他情况检查了this.props
,但在这种情况下,如何根据窗口
变量只设置一次状态
componentDidUpdate(window.globalVar) {
if (window.globalVar) {
this.setState({
lorem: window.globalVar
});
}
}
考虑将代码移动到
组件didmount
。当一个组件被装载时,它将只被调用一次。这是初始化状态的好地方
另一个好地方是使用类的构造函数。但在构造函数中,只需将window.globalVar
分配给状态。不要使用setState
constructor () {
this.state = { lorem: window.globalVar }
}
componentdiddupdate
在每次状态更新时都被调用。为了防止无限更新,您必须在setState
之前比较上一个状态和当前状态,然后考虑将代码移动到组件didmount
。当一个组件被装载时,它将只被调用一次。这是初始化状态的好地方
constructor () {
this.state = { lorem: window.globalVar }
}
另一个好地方是使用类的构造函数。但在构造函数中,只需将window.globalVar
分配给状态。不要使用setState
constructor () {
this.state = { lorem: window.globalVar }
}
componentdiddupdate
在每次状态更新时都被调用。为了防止无限更新,您必须先比较上一个状态和当前状态,然后才能执行此操作
constructor () {
this.state = { lorem: window.globalVar }
}
componentDidUpdate(prevProps, prevState) {
if(window.globalVar !== undefined){ // window.globalVar is not undefined
if (prevState.lorem !== window.globalVar) { // prevState.lorem is not equal to window.globalVar
this.setState({
lorem: window.globalVar
});
}
}
}
你可以这样做
componentDidUpdate(prevProps, prevState) {
if(window.globalVar !== undefined){ // window.globalVar is not undefined
if (prevState.lorem !== window.globalVar) { // prevState.lorem is not equal to window.globalVar
this.setState({
lorem: window.globalVar
});
}
}
}
不幸的是,我不能在componentDidMount
中完成它,因为它当时是未定义的。我想继续检查window.globalVar
,直到它未被定义,然后在该点设置state onceWho正在更新window.globalVar
?它是另一个React组件吗?不幸的是,我不能在componentDidMount
中执行它,因为它当时是未定义的。我想继续检查window.globalVar
,直到它未被定义,然后在该点设置state onceWho正在更新window.globalVar
?它是另一种反应成分吗?