我正在尝试重构一些旧代码。
componentWillMount
已被弃用。
我将如何在这里将其重构为其他内容?
class Detail extends React.Component{
constructor(props) {
super(props);
this.state = {
logged_out_redirect: true
};
}
componentWillMount() { //<------ this lifecycle method has been deprecated, how do I replace it?
if (localStorage.getItem("JWT")) {
this.setState({logged_out_redirect: false});
}
}
render() {
if (this.state.logged_out_redirect) {
return (<Redirect to={"/login"}/>)
}
return ( )
}
}
在这种情况下
(取决于你在componentWillMount
中尝试执行的操作(。你不能把它放在你的constructor()
constructor(props) {
super(props);
this.state = {
logged_out_redirect: localStorage.getItem("JWT") ? false : true
};
}
您可以尝试使用 getDerivedStateFromProps
.这将首次调用,并将用于任何后续更新。
static getDerivedStateFromProps(props, state) {
if (localStorage.getItem("JWT") && state.logged_out_redirect) {
return {logged_out_redirect: false};
}
return null;
}
你可以
用componenDidMount
替换它:
componentDidMount() {
if (localStorage.getItem("JWT")) {
this.setState({logged_out_redirect: false});
}
}