簡體   English   中英

如何在compoentWillMount ReactJS中使用setState()

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM