0

我正在使用一个名为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:无法读取 Store.js:19 处未定义的属性“setState”

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

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

4

1 回答 1

1

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

1.)

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

2)

getAllUsers = () =>{ ... }
于 2018-06-20T13:39:50.853 回答