未声明无法读取未定义的属性“ setState”

时间:2018-06-20 11:12:42

标签: javascript reactjs unstated

当我运行以下代码时,我正在使用一个名为unstated的状态库:

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:无法读取未定义的属性“ setState”       在Store.js:19

我肯定会返回结果,因为docs确实要设置状态时包含对象。我也在按照文档/示例中的方式做事。

为什么看不到引用this?是因为承诺吗? h!

1 个答案:

答案 0 :(得分:1)

您应该绑定该功能或使用箭头功能。

1。)

constructor(){
this.getAllUsers=this.getAllUsers.bind(this) 
}

2)

getAllUsers = () =>{ ... }