当道具改变时,React是否重新渲染组件

问题描述:

假设我有两个组件,分别为ParentChild。在Parent组件中,我有一个名为lastName的状态,作为prop传递给Child。现在在ChildParent的初始渲染后,如果中Parent发生更改,是否会导致Child组件重新渲染?当道具改变时,React是否重新渲染组件

是的,如果你通过setState设置属性。但是,React中的重新渲染不是你应该害怕的,因为使用了Virtual DOM,所以效率非常高。

+1

Tnx for answer,我并不害怕因为效率低下,但因为它不会重新渲染! – Mehrdad

+0

@Mehrdad它会,因为某种原因,它被称为React [ive]。 – Pavlo

在子组件,你应该使用下面的

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返回到父组件