我正在使用一个名为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;
我收到此错误:
类型错误: 无法读取未定义的属性"setState" 在商店.js:19
我肯定会得到结果,因为docs
在我想设置状态时确实包含对象。我也在做与文档/示例中完全相同的事情。
为什么看不到this
参考?是因为它是承诺吗?咚!
您应该绑定函数或使用箭头函数。
1.(
constructor(){
this.getAllUsers=this.getAllUsers.bind(this)
}
2(
getAllUsers = () =>{ ... }