如何在React JS中接收更新的道具?

时间:2018-12-11 00:11:56

标签: javascript reactjs redux

能否请您告诉我如何在react js中接收更新的道具?我知道componentWillReceivePropsunsafe,我尝试使用getDerivedStateFromProps但没有用

这是我的代码 https://codesandbox.io/s/rm30zoonk4

两秒钟后,我正在更新要传递给props的状态

Expected output after two second

abcsssss

static getDerivedStateFromProps(nextProps, prevState) {
    if (nextProps.src !== "") {
      return { src: nextProps.src };
    } else return null;
  }

2 个答案:

答案 0 :(得分:0)

您可以使用public class testProc implements Processor<Object, Long> { private ProcessorContext context; private String s; public testProc(String s) { this.s=s; } @Override public void init(ProcessorContext context) { this.context = context; } @Override public void close() { // TODO Auto-generated method stub } @Override public void process(Object key, Long value) { // TODO Auto-generated method stub System.out.println("****** "+key+" ********* "+value); } }

  

componentDidUpdate()在更新发生后立即被调用。

https://reactjs.org/docs/react-component.html#componentdidupdate

componentDidUpdate

答案 1 :(得分:0)

您应该使用componentDidUpdate(prevProps,prevState)

componentDidUpdate在组件即将接收新道具或内部状态时被调用,在这里您可以在重新呈现组件之前进行干预。

因此在hello.js中,而不是getDerivedState:

componentDidUpdate(prevProps) {
  if (prevProps.src !== this.props.src) {
    this.test()
  }
}

完成了“ if(prevProps.src!== this.props.src)”比较,因此组件仅在src prop更改时才更新,从而防止不必要的重新渲染。