Javascript 通过道具前反应变异状态
在react中将道具从state传递到其子组件之前,有没有办法先更改state?以下是一个例子:Javascript 通过道具前反应变异状态,javascript,reactjs,Javascript,Reactjs,在react中将道具从state传递到其子组件之前,有没有办法先更改state?以下是一个例子: static getDerivedStateFromProps(nextProps, prevState) { let parsedKeyword = queryString.parse(nextProps.location.search).q; if (parsedKeyword !== prevState.keyword) { return {
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} />
);
}
静态getDerivedStateFromProps(下一步,上一步){
让parsedKeyword=queryString.parse(nextrops.location.search).q;
if(parsedKeyword!==prevState.keyword){
返回{
关键词:parsedKeyword,
}
}
返回{
关键字:prevState.keyword,
};
}
render(){
报税表(
);
}
在我的例子中,我希望在将道具传递给
ChildComponent
之前,在接收nextrops
时立即对关键字状态进行更改。如何在react中执行此操作?我假设您使用的是最新版本的react(v16.3.2)
建议您在构造函数中初始化状态。根据getDerivedStateFromProps在组件初始化后调用,在收到新的props时再次调用。您可以在
getDerivedStateFromProps
中的return语句之前对其进行修改
或者,您可以在渲染中操作,在传递到ChildComponent之前,它不会更改状态
render() {
const modifiedKeyword = this.state.keyword + 'Modified'
return (
<ChildComponent myProps={modifiedKeyword}/>
);
}
render(){
const modifiedKeyword=this.state.keyword+'Modified'
返回(
);
}