Javascript React JS:当比赛更新时,我应该如何管理数据刷新?

Javascript React JS:当比赛更新时,我应该如何管理数据刷新?,javascript,reactjs,Javascript,Reactjs,我是个新手,我想在登录后向REST服务器重新请求数据,以防出现“会话过期错误” 当组件挂载时,它从网络获取数据。但是,如果会话已过期,我将收到未经授权的错误。此错误由父组件管理,该组件显示重新激活会话的登录表单。我这样做是因为我有许多组件应该像这样工作(登录后重新请求) 它执行以下操作:如果它无法从网络中获取数据,并且当前没有获取数据(!this.update flag),它将通过this.getData方法请求数据。在乐观假设中更新gotData,如果getData方法失败,则将其设置为fal

我是个新手,我想在登录后向REST服务器重新请求数据,以防出现“会话过期错误”

当组件挂载时,它从网络获取数据。但是,如果会话已过期,我将收到未经授权的错误。此错误由父组件管理,该组件显示重新激活会话的登录表单。我这样做是因为我有许多组件应该像这样工作(登录后重新请求)

它执行以下操作:如果它无法从网络中获取数据,并且当前没有获取数据(!this.update flag),它将通过this.getData方法请求数据。在乐观假设中更新gotData,如果getData方法失败,则将其设置为false

我知道不应该在componentWillUpdate方法中使用setState,但我还没有找到更好的解决方案。也许我可以在所有组件中添加一个validSession属性,然后在“Parent”出现“expiration”错误时将其设置为false,并在登录完成时将其设置为true。并从in-componentWillReceiveProps而不是componentWillUpdate重新请求数据

另一种可能的解决方案是向组件订阅一个全局“重新登录”事件,并在侦听器中执行数据请求


你会怎么做?也许我的方法从一开始就完全错了…

你在使用redux吗?不,我没有,直到现在我还没有看到任何需要。我这样问是因为使用redux,你可以发出一个动作,表明你的登录会话已过期,然后更新你的状态。每当需要检查会话是否已过期时,只需读取更新状态。并发出一个动作来重新加载数据。组件中的更新将是透明的,你知道吗?谢谢你的回复。我会考虑的。这是我的第一个react项目,在看到真正的需求之前,我决定不使用redux。也许是时候了:-)我明白了。非常明智。。哈哈哈。但是给redux一个机会。。。呵呵,你在使用redux吗?不,我没有,我现在还没有看到任何需要。我这么问是因为有了redux,你可以发出一个动作,说明你的登录会话已经过期,然后更新你的状态。每当需要检查会话是否已过期时,只需读取更新状态。并发出一个动作来重新加载数据。组件中的更新将是透明的,你知道吗?谢谢你的回复。我会考虑的。这是我的第一个react项目,在看到真正的需求之前,我决定不使用redux。也许是时候了:-)我明白了。非常明智。。哈哈哈。但是给redux一个机会。。。呵呵。
<Parent>
 <Component1/>
 <Component2/>
 ...
</Parent>
if (!this.state.gotData && !this.updating){
    this.updating = true;
    this.setState({gotData:true}, 
        ()=>{this.updating=false; this.getData();});
}