能否请您告诉我如何在react js中接收更新的道具?我知道componentWillReceiveProps
是unsafe
,我尝试使用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;
}
答案 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更改时才更新,从而防止不必要的重新渲染。