Javascript 组件将接收当前道具的道具

Javascript 组件将接收当前道具的道具,javascript,reactjs,Javascript,Reactjs,我正在写表单的一个组件 首次装入组件时,sources={{},这是一个空字典。因为这个组件包装了一个现有的Javascript库,所以我实现了一个自定义的diffing函数。为了让这个diffing函数第一次工作,它需要知道this.props.sources={}是第一次,this.props.sources={…stuff…}是在后续的更新中。React文档说在初始装载时不会调用ComponentWillReceiveProps,但我正在尝试执行以下操作: componentWillRec

我正在写表单的一个组件

首次装入组件时,sources={{},这是一个空字典。因为这个组件包装了一个现有的Javascript库,所以我实现了一个自定义的diffing函数。为了让这个diffing函数第一次工作,它需要知道this.props.sources={}是第一次,this.props.sources={…stuff…}是在后续的更新中。React文档说在初始装载时不会调用ComponentWillReceiveProps,但我正在尝试执行以下操作:

componentWillReceiveProps(nextProps) {
    console.log(this.props.sources)
}
在使用sources={{}}初始化MyComponent之后,我将一些sources={…stuff…}传递给它,我希望Component中的this.props.sources将接收到{},因为下一步操作尚未更新。但是,this.props.sources返回{…stuff…},这是传入的最新道具

this.props.sources
在componentWillReceiveProps的内部,方法可能引用父类的props,而不是传入的props。尝试日志记录

nextProps.sources

相反,看看这是否更符合您的期望。

我认为这是因为在js中通过引用传递。
在父组件中,您做到了:我认为您也做到了这一点。state.sources.pushsomething;如果您这样做,这是更改状态的错误方式,它将破坏子组件MyComponent的引用比较。您能否确保您没有修改原始父组件的状态?

所有操作都按您的意愿进行,或者我不理解您的意思?@Andrew谢谢,但这是可行的,因为您正在componentDidMount中设置状态-我希望它在不设置状态的情况下工作-它们都会导致相同的结果