我在使用componentWillReceiveProps()方法的时候踩了一个坑。
代码结构大致是这样的:
class Demo extends Component {
componentWillReceiveProps(nextProps) {
// 这里打印出来的value是父级元素最新传进来的value
console.log(nextProps.value);
this.resetData();
}
resetData() {
// 这里的打印的value还是上一次传入的value
console.log(this.props.value);
}
}
这里说明一个什么问题呢?说明在componentWillReceiveProps里的调用方法中,使用this.props
取得props
下的属性值都是上一版的属性值,而不是最新的属性值。
那么如何解决这个问题呢?最简单的方法,当然是把最新版的、调用的函数里面需要的属性值传给函数。示例如下:
class Demo extends Component {
componentWillReceiveProps(nextProps) {
// 这里打印出来的value是父级元素最新传进来的value
console.log(nextProps.value);
this.resetData(nextProps.value);
}
resetData(value) {
// 这里的打印的是最新的value
console.log(value);
}
}