首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未声明不能读取未定义的属性“setState”

未声明不能读取未定义的属性“setState”
EN

Stack Overflow用户
提问于 2018-06-20 11:12:41
回答 1查看 406关注 0票数 0

我使用一个名为未说明的状态库,当我运行以下代码时:

代码语言:javascript
复制
import { Container } from 'unstated';
import Fire from '../Core/Fire';

class Store extends Container {
  state = {
    users: [],
  };

  getAllUsers() {
    const db = Fire.firestore();
    const reference = db.collection('users');
    reference
      .get()
      .then(snapshot => {
        const docs = [];
        snapshot.forEach(doc => {
          docs.push(doc);
        });
        this.setState({
          users: docs.map(doc => {
            return {
              id: doc.id,
              model: doc.data(),
            };
          }),
        });
      })
      .catch(error => {
        console.error(error);
      });
  }
}

export default Store;

我知道这个错误:

TypeError:无法读取Store.js:19处未定义的属性“setState”

我肯定会得到结果,因为docs在设置状态时确实包含对象。在文档/示例中,我也在做完全相同的事情。

为什么没有看到参考this?是因为它在承诺中吗?哈!

EN

回答 1

Stack Overflow用户

发布于 2018-06-20 13:39:50

您应该绑定函数或使用箭头函数。

1.)

代码语言:javascript
复制
constructor(){
this.getAllUsers=this.getAllUsers.bind(this) 
}

2)

代码语言:javascript
复制
getAllUsers = () =>{ ... }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50946867

复制
相关文章

相似问题

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