作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
正如官方文档所说, 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/
我是一名优秀的程序员,十分优秀!