此组件的替代组件将安装案例



我正在尝试重构一些旧代码。

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

最新更新