2016-08-18 2 views
3

В среагировать родной, если хотите ребенка вызвать функцию родителя, я могу сделать следующее:Реагировать родной, как может родитель передать функцию ребенку

В родителю:

<Child myFunc={this.handleChildFunc.bind(this)} /> 

И ребенок будет называть эту функцию следующим образом:

onpress=this.props.myFunc(); 

Как я могу добиться этого в навигаторе и NavigatorIOS через passProps?

<NavigatorIOS 
    initialRoute={{ 
     component: MyScene, 
     title: 'My Initial Scene', 
     passProps: { myProp: this.handleChildFunc.bind(this) } // Not work 
     passProps: { myProp:()=>this.handleChildFunc.bind(this) } //Not work 
    }} 
    style={{flex: 1}} 
    /> 

Update

Спасибо за ответ, но я новичок реагировать родной, на самом деле не понимают, как реализовать ниже ответ в navigatorIOS. Тем не менее, я попытался следующие, и ребенок может успех вызова родителей функция

В родителю, передать функцию обратного вызова в качестве реквизита

passProps: { parentFunc:()=>this.handleFunc() } 

В детстве

this.props.handleFunc(); 

ответ

1

Существует demo, может быть полезным.

Пример функции renderScene:

renderScene(route, navigator) { 
    let Component = route.component; 
    return <Component {...route.params} navigator={navigator} /> 
} 

Пример толкающего новой сцены:

this.props.navigator.push({ 
    component: Child, 
    func: customFunc 
}) 

, то вы можете использовать this.props.func в детской странице (вторичной страницы).

+0

Спасибо за ваш ответ. – bns

2

Этот код работает для меня

return(
    <NavigatorIOS 
     initialRoute={{ 
      component: MyScene, 
      title: 'My Initial Scene', 
      myProp: (() => { this.handleChildFunc.bind(this) }) // work 
     }} 
     renderScene={ (route, navigator) => 
      <Child navigator={navigator} {...route.passProps} onFun={ route.myProp } /> 
     } 
     /> 
) 

Когда вызов в детстве

this.props.onFun() 

Check here

+0

Спасибо за ваш ответ. – bns

 Смежные вопросы

  • Нет связанных вопросов^_^