如何在 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

需要帮助:(

问题来自:

Firebase.auth().onAuthStateChanged(function(user){

this 不是指反应组件。相反,尝试:

Firebase.auth().onAuthStateChanged((user) => {

几件事:

1) 您需要将此代码移至 componentDidMountcomponentWillMountdeprecated. Here's 一些关于为什么你应该更喜欢 componentDidMount

的更多信息

2) 将您的 onAuthStateChanged 回调更改为 arrow function.

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
    })
  }
})

}