[英]ReactJS: Use setState at the end of a if statement inside a function
[英]How to use setState() inside compoentWillMount ReactJS
我是ReactJs的新手。 我正在嘗試使用它創建一個Firebase應用程序。 所以在componentWillMount中,我正在檢查用戶是否已登錄,並根據該狀態設置狀態布爾值
componentWillMount() {
var config = {...};
Firebase.initializeApp(config)
Firebase.auth().onAuthStateChanged(function(user){
if(user){
console.log("User logined");
this.setState({
isLogined : true
})
}else{
console.log("User isn't logined");
this.setState({
isLogined : false
})
}
})
}
但這表明setState()不是函數。
index.js:2178 TypeError: this.setState is not a function
at Object.next (App.js:31)
at index.cjs.js:1353
at index.cjs.js:1457
需要幫忙 :(
一些事情:
1)您需要將此代碼移至componentDidMount
。 不推薦使用 componentWillMount
。 這是有關為什么您更喜歡componentDidMount的更多信息
2)將您的onAuthStateChanged
回調更改為箭頭函數 。
componentDidMount() {
var config = {...};
Firebase.initializeApp(config)
Firebase.auth().onAuthStateChanged((user) => {
if(user){
console.log("User logined");
this.setState({
isLogined : true
})
}else{
console.log("User isn't logined");
this.setState({
isLogined : false
})
}
})
}
問題來自:
Firebase.auth().onAuthStateChanged(function(user){
this
與反應成分無關。 相反,請嘗試:
Firebase.auth().onAuthStateChanged((user) => {
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.