Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过道具前反应变异状态_Javascript_Reactjs - Fatal编程技术网

Javascript 通过道具前反应变异状态

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 {

在react中将道具从state传递到其子组件之前,有没有办法先更改state?以下是一个例子:

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'
返回(
);
}