我重构了我的React应用程序,并用getDerivedstateFromProps替换了componentWillRecieveProps。
然后它给出一个错误,提示Cannot read property 'setState' of undefined
这是我的代码
static getDerivedStateFromProps = nextProps => {
const { auth, history } = nextProps;
redirectIfAuthenticated(auth.isAuthenticated, history, './dashboard');
if (nextProps.errors) {
this.setState({
errors: nextProps.errors
});
}
}
我在这里做什么错了?
答案 0 :(得分:1)
getDerivedStateFromProps
不仅是componentWillReceiveProps
的重命名,而且具有不同的用途和语法。它是静态的,因此无法访问该类实例
还应该getDerivedStateFromProps
仅更新状态,而没有任何副作用。所有副作用都必须在componentDidUpdate中
static getDerivedStateFromProps(props, state) {
if (props.errors !== state.prevErrors) {
return {
errors: props.errors,
prevErrors: props.errors
}
}
return { prevErrors: props.errors}
}
render() {
const { auth, history } = props;
if(this.props.auth.isAuthenticated) {
return <Redirect to={'/dashboard'} />
};
// extra logic here
}