componentWillRecieveProps当前的道具

时间:2017-02-26 20:37:22

标签: javascript reactjs

我正在编写

形式的组件

<MyComponent sources={this.state.sources} />

首次安装组件时sources={{}},一个空字典。由于这个组件包装了一个现有的Javascript库,我正在实现一个自定义的diffing函数。为了使这个差异函数第一次工作,它需要首次知道this.props.sources = {}并在后续更新时知道this.props.sources= { ... stuff ... }。 React文档说初始挂载时没有调用componentWillRecieveProps,但我正在尝试执行以下操作:

componentWillReceiveProps(nextProps) {
    console.log(this.props.sources)
}

在使用MyComponent初始化sources={{}}后,我将sources={... stuff ...}传递给this.props.sources,我希望componentWillReceiveProps内的{}nextProps this.props.sources尚未更新。但是,{... stuff ...}会返回geom_density_2d(),这是传入的最新道具。

2 个答案:

答案 0 :(得分:1)

我认为这是因为在js中通过引用传递。 在您的父组件中,您执行:<MyComponent sources={this.state.sources} />,如果您这样做,我认为您也执行了this.state.sources.push(something);,这是更改状态的错误方法,它会破坏子组件{{1}的引用比较你能确定你没有修改原来父母的状态吗?

答案 1 :(得分:0)

this.props.sources

您的componentWillReceiveProps方法内部可能是指父类的道具,而不是传入的道具。尝试记录

nextProps.sources

而是看看它是否更符合您的预期。