2017-09-13 54 views
0

如何將notify作爲一個父組件,當任何深度嵌套的children組件dispatches如何在孩子派遣時通知家長?

例如

class ParentComponent extends Component { 
    render() { 
     return (
      <div> 
       {this.props.children} 
      </div> 
     ); 
    } 
} 

請注意,兒童可以是任何深度的,例如,

<Component1> 
    <Component2> 
     <ComponentThatWillDispatch /> 
    </Component2> 
</Component1> 
+2

你是什麼意思的「調度」?所有子代都被渲染後,應該調用父級的componentDidMount方法。各個組件也可以實現'componentDidMount'來調用父方法。但如果你想用這種方式改變某些事物的狀態,那就羞愧了。 –

+0

如果您想廣播調度,那麼您需要將某種功能(例如didDispatch)從父母傳遞給每個孩子,然後每個孩子都會調用它。 – Mikkel

+0

@RyanWheale:通過調度,我的意思是子組件調用生命循環方法,並在redux商店上執行一個操作。 例如'this.store.dispatch({type:...})' 我不是在談論渲染。 – DKo

回答

0

有獲得從子到父通知兩種方式,

  1. ComponentWillReceiveProps,
  2. 從父到子傳遞一個動作,

ComponentWi llReceiveProps

它將返回和以前的道具和新道具,讓組件將被通知

傳遞行動作爲參數

讓你的行動會從你的孩子組成部分,但它被觸發從家長髮送,所以你的父母componwent會知道的功能已被觸發

class ParentComponent extends Component { 
    constructor() { 
     this.myAction= this.myAction.bind(this); 
    } 
    render() { 
     return (
      <div> 
      <Component1> 
       <Component2 > 
        <ComponentThatWillDispatch myaction={this.myAction}/> 
       </Component2> 
      </Component1> 
      </div> 
     ); 
    } 
    myAction(){ 
     alert("Called ") 
    } 
} 

你^ h大街進口你的組件

+0

對於所有道具,不是「componentWillReceiveProps」,不僅是其子道具? – DKo