在传递道具之前反应变异状态

时间:2018-05-21 21:32:08

标签: javascript reactjs

在将状态从状态传递给其子组件之前,有没有办法先改变状态?这是一个例子:

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时立即更改关键字状态。我怎么能做出反应?

2 个答案:

答案 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在组件初始化后调用,并在收到新道具时再次调用。