正如官方文档所说,componentWillMount
已被弃用,建议放在
将此生命周期方法使用的任何代码都应传入构造函数。
老实说,我不知道该怎么做。我有用于componentWillMount
的这段代码
但是我应该如何将其实现到构造函数中:
if (window.localStorage.getItem("authToken"))
this.setState({ isAuthenticated: true });
我有这样的:
constructor() {
super();
this.state = {
users: [],
username: "",
email: "",
title: "something",
isAuthenticated: false
};
if (window.localStorage.getItem("authToken"))
this.setState({ isAuthenticated: true });
}
但该条件在应触发时并未触发。条件语句应如何在构造函数中工作?
任何指导表示赞赏。
编辑:
constructor() {
super();
this.state = {
users: [],
username: "",
email: "",
title: "something",
isAuthenticated: window.localStorage.getItem("authToken") ? true : false
};
}
我会尝试的,因为这对我来说确实有意义。
最佳答案
您不能期望componentWillMount的确切流程,而是需要以稍微不同的方式进行思考。
你可以这样做。
componentDidMount() {
if (window.localStorage.getItem("authToken"))
this.setState({ isAuthenticated: true });
}
render() {
// Since this function will be called before
// componentDidMount, handle the false case here
if (!this.state.isAuthenticated) {
return null; // or any fallback UI for unAuthenticated user
}
return (
// the original UI
)
}
关于javascript - 不推荐使用componentWillMount,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60388563/