反应组件用户不在状态

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反应组件用户不在状态相关的知识,希望对你有一定的参考价值。

考虑以下:

 componentDidMount(){
    this.props.requestUser(this.props.match.params.userID).then(res => 
      {
        this.pageOwner = res.user;
      debugger;
     })

  }

为什么我的this.pageOwner仍然返回undefined?我一直在努力让用户进入我的用户配置文件可以实际访问的状态。

答案

如果您正在尝试访问this.pageOwner,则需要在this.props.requestUser()异步功能完成后执行此操作。您目前正在componentDidMount()中获取用户,因此您的render()最初会将this.pageOwner视为undefined,直到异步调用完成。

此外,最好在state中存储异步调用的结果,以便在填充值后重新呈现组件。

另一答案

正如@colin所说,把它放在this.state。如果你在render()函数中遇到错误,那么就像这样制作你的渲染:

constructor() {
 super();
 this.state = {
   pageOwner: null
 }
}

componentDidMount() {
 this.props.requestUser(this.props.match.params.userID).then(res => 
 {
  this.setState({pageOwner: res.user});
  debugger;
 })
}

render() {
 if(this.state.pageOwner) 
   return ( ... )
 else 
   return null;
}

以上是关于反应组件用户不在状态的主要内容,如果未能解决你的问题,请参考以下文章

从 redux 更改状态后如何以及何时调用反应组件方法

如何使用从子组件传递给组件的反应变量更新 redux 状态

如何为具有分离数据源的 2 个反应组件更新 relayjs 缓存

在反应中更改状态时组件不会重新渲染

从反应组件的状态中删除密钥的最佳方法

如何更新 Recoil.js 外部组件中的原子(状态)? (反应)