首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用火基数据安装前设置反应组件状态

用火基数据安装前设置反应组件状态
EN

Stack Overflow用户
提问于 2018-10-23 16:34:00
回答 2查看 515关注 0票数 1

在组件用我从Firebase提取的数据挂载(在cmoponentWillMount中)之前,我正在尝试对组件进行setState,但是我收到了一个错误:“无法读取未定义的属性'setState‘。如何正确设置状态,以便组件装载正确的数据?”

代码语言:javascript
复制
componentWillMount(){
  const rootRef = fire.database().ref('groups')
  rootRef.limitToFirst(1).once('value', function(snap) {
    snap.forEach(function(child){
      var first = (child.val()).id;
      console.log(first);
      this.setState({ selectedGroupId: first });
    })
  });
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-23 16:57:43

尝尝这个。

不要在循环中执行setState,因为您使用的是常规函数,所以请将其更改为箭头函数,如下所示。还切换到componentDidMount方法,因为不推荐componentWillMount

代码语言:javascript
复制
  componentDidMount(){
      const rootRef = fire.database().ref('groups')
      rootRef.limitToFirst(1).once('value', snap => {
      let first = 0;
      snap.forEach(child => {
          first = (child.val()).id;
          console.log(first);
     })
     this.setState({ selectedGroupId: first });
     });
  }

如果您不喜欢使用箭头函数,也可以这样绑定它

代码语言:javascript
复制
   componentDidMount(){
         const rootRef = fire.database().ref('groups')
         rootRef.limitToFirst(1).once('value', function(snap) {
              let first = 0;
              snap.forEach(function(child){
                    first = (child.val()).id;
                    console.log(first);
               }.bind(this));
             this.setState({ selectedGroupId: first });
            }.bind(this));
     }

开始使用let & const而不是var。

票数 1
EN

Stack Overflow用户

发布于 2018-10-23 16:48:55

这是因为这个的作用域是未定义的。您需要使用ES6箭头函数传递它。

代码语言:javascript
复制
componentWillMount(){
  const rootRef = fire.database().ref('groups')
  rootRef.limitToFirst(1).once('value', (snap) => {
    snap.forEach((child) => {
      var first = (child.val()).id;
      console.log(first);
      this.setState({ selectedGroupId: first });
    })
  });
}

这边试试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52953897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档