如何在 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) 您需要将此代码移至 componentDidMount
。
componentWillMount
是 deprecated. 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
})
}
})
}
我是 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) 您需要将此代码移至 componentDidMount
。
componentWillMount
是 deprecated. 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
})
}
})
}