Причина, по которой вы получаете эту ошибку, заключается в том, что вы не используете функции стрелок в коде обещания. Нормальные функции, вероятно, теряют ссылку this на ваш компонент.
var { postCode, error, propertySearched, propertyList} = this.state;
return this.props.firebase.db.collection("property").where("postcode", "==", postCode)
.get()
.then((querySnapshot)=> {
querySnapshot.forEach((doc)=> {
// doc.data() is never undefined for query doc snapshots
this.setState({
propertyList: doc.data
})
// Need to display this data in a component
});
})
.catch(function(error) {
console.log("Error getting documents: ", error);
});
Хотя, как только это сработает, вы, вероятно, столкнетесь с проблемой, когда propertyList устанавливается только с данными последнего snapShot, поэтому вам следует скорее всего, используйте querySnapshot.map
вместо forEach, чтобы вы могли добавить список doc.data
в propertyList вместо одного.
var { postCode, error, propertySearched, propertyList} = this.state;
return this.props.firebase.db.collection("property").where("postcode", "==", postCode)
.get()
.then((querySnapshot)=> {
this.setState({
propertyList: querySnapshot.map((doc)=> doc.data)
})
});
})
.catch(function(error) {
console.log("Error getting documents: ", error);
});