当道具改变时,React是否重新渲染组件
问题描述:
假设我有两个组件,分别为Parent
和Child
。在Parent
组件中,我有一个名为lastName
的状态,作为prop传递给Child
。现在在Child
和Parent
的初始渲染后,如果中Parent
发生更改,是否会导致Child
组件重新渲染?当道具改变时,React是否重新渲染组件
答
在子组件,你应该使用下面的
shouldComponentUpdate(nextProps){
return this.props.lastname !== nextProps.lastname
}
https://facebook.github.io/react/docs/component-specs.html#shouldComponentUpdate
之后,在孩子组件,您可能需要更新的状态。为了实现这一目标,您可以使用componentWillReceiveProps(nextProps)
componentWillReceiveProps(nextProps){
this.setState({
lastname: nextProps.lastname
});
}
答
子组件只能重新呈现时的道具lastName
在孩子的渲染功能和父用setState
功能被用来改变lastName
。请记住,React是单向数据流,如果你想在Child内部重新渲染Child组件,你必须调用一个事件,该事件也会触发setState
返回到父组件
Tnx for answer,我并不害怕因为效率低下,但因为它不会重新渲染! – Mehrdad
@Mehrdad它会,因为某种原因,它被称为React [ive]。 – Pavlo