我知道我错过了一些基本的东西,如果有人可以提供帮助,我会非常感激。这段代码给了我一个警告:"无法读取属性' setState' null。"
constructor(props) {
super(props);
this.state = {
foundUser: false
}
}
componentWillMount() {
var requestEmail = this.props.email
new Firebase(url)
.orderByChild('email')
.startAt(requestEmail)
.endAt(requestEmail)
.once('value', function (snap) {
var foundUser = snap.val();
if (foundUser) {
this.setState({found: true})
} else {
this.setState({foundUser: false})
}
});
},
render: function () {
if (this.state.foundUser === false) {
//render a scene here ...
}
return ( ....
答案 0 :(得分:0)
您错过了组件的初始状态,尝试将以下功能添加到组件
getInitialState: function() {
return {
foundUser: false
};
}
答案 1 :(得分:0)
使用this
时,您需要确保拥有正确的组件上下文:
componentWillMount() {
var self = this;
var requestEmail = this.props.email
new Firebase(url)
.orderByChild('email')
.startAt(requestEmail)
.endAt(requestEmail)
.once('value', function (snap) {
var foundUser = snap.val();
if (foundUser) {
self.setState({found: true})
} else {
self.setState({foundUser: false})
}
});
},
在变量中保存对this
的引用,或者您可以使用.bind
,甚至更好的es6箭头函数,因为它看起来像您正在使用es6。
new Firebase(url)
.orderByChild('email')
.startAt(requestEmail)
.endAt(requestEmail)
.once('value', (snap) => {
var foundUser = snap.val();
if (foundUser) {
this.setState({found: true})
} else {
this.setState({foundUser: false})
}
});