2017-03-31 52 views
1

在這個非常基本的示例中,我將組件Bar包含在組件Foo的渲染函數中。我注意到BarcomponentDidMount方法在每次Foo重新渲染時都會觸發 - 這是正確的行爲嗎?React - 每次父組件呈現時,子組件是否重新掛載?

import Bar from './Bar.jsx'; 

export default class Foo extends Component { 
    render() { 
     return (
      <Bar /> 
     ); 
    } 
} 

注:我也問過這個問題,理智檢查預期的行爲,爲了追蹤一個錯誤。

回答

2

孩子的行爲取決於父母的行爲。

componentDidMount()在組件裝入後立即被調用。子組件的componentDidMount()方法在父組件之前被調用。

如果您的父組件簡單地重新呈現,則期望子組件僅僅重新呈現,因爲componentDidMount()在組件的生命週期中僅被調用一次。

+0

可否請你清理這個答案,將其取出約父重新安裝細節,問題是隻關心重新渲染(?) – JoeTidee

+1

@JoeTidee完成。 – idjuradj

0

在渲染功能中使用if/else邏輯時需要小心。在下面的例子中,Bar組件將卸載如果loading道具值更改爲true

import Bar from './Bar.jsx'; 

export default class Foo extends Component { 
    render() { 
     if(this.props.loading){ 
      return (
       <div>Loading...</div> 
      ); 
     } 
     else{ 
      return (
       <Bar /> 
      ); 
     } 
    } 
} 
相關問題