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
?它是另一种反应成分吗?