2016-08-03 125 views
0

假設我有兩個組件,分別爲ParentChild。在Parent組件中,我有一個名爲lastName的狀態,作爲prop傳遞給Child。現在在ChildParent的初始渲染後,如果中Parent發生更改,是否會導致Child組件重新渲染?當道具改變時,React是否重新渲染組件

回答

0

是的,如果你通過setState設置屬性。但是,React中的重新渲染不是你應該害怕的,因爲使用了Virtual DOM,所以效率非常高。

+1

Tnx for answer,我並不害怕因爲效率低下,但因爲它不會重新渲染! – Mehrdad

+0

@Mehrdad它會,因爲某種原因,它被稱爲React [ive]。 – Pavlo

0

在子組件,你應該使用下面的

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 
    }); 
} 
0

子組件只能重新呈現時的道具lastName在孩子的渲染功能和父用setState功能被用來改變lastName。請記住,React是單向數據流,如果你想在Child內部重新渲染Child組件,你必須調用一個事件,該事件也會觸發setState返回到父組件

相關問題