在将状态从状态传递给其子组件之前,有没有办法先改变状态?这是一个例子:
AttributeError: 'MySimpleLayer' object has no attribute '_scope'
就我而言,我希望在将props传递给static getDerivedStateFromProps(nextProps, prevState) {
let parsedKeyword = queryString.parse(nextProps.location.search).q;
if (parsedKeyword !== prevState.keyword) {
return {
keyword: parsedKeyword,
}
}
return {
keyword: prevState.keyword,
};
}
render() {
return (
<ChildComponent myProps={this.state.keyword} />
);
}
之前,在接收nextProps
时立即更改关键字状态。我怎么能做出反应?
答案 0 :(得分:1)
您可以在getDerivedStateFromProps
内的return语句之前修改它。
或者你可以在渲染中进行操作,在传递给ChildComponent之前,它并没有改变状态。
render() {
const modifiedKeyword = this.state.keyword + 'Modified'
return (
<ChildComponent myProps={modifiedKeyword}/>
);
}
答案 1 :(得分:0)
我假设您使用的是最新版本的React(v16.3.2)。
React Blog建议你应该在构造函数中初始化状态。根据{{3}},getDerivedStateFromProps
在组件初始化后调用,并在收到新道具时再次调用。