2015-04-07 3 views
1

У меня есть представление, которое я хочу, чтобы пользователи могли выбирать несколько элементов. После выбора элементов я хочу, чтобы они нажали кнопку «Готово» в правом верхнем углу и переместились на следующий экран. Используя Swift, я подключился к prepareForSegue и segue.destinationViewController, чтобы это произошло.NavigatorIOS onRightButtonPress Access View Data

С помощью React Native я использую функцию NavigatorIOS onRightButtonPress, но не знаю, как получить доступ к данным View для использования в passProps.

Код в настоящее время выглядит следующим образом:

return (<NavigatorIOS 
    ref="nav" 
    style={styles.nav} 
    initialRoute={{ 
    nav: this.refs.nav, 
    component: this.props.onSuccessView, 
    title: 'What Would You Like To Do?', 
    rightButtonTitle: 'Next', 
    onRightButtonPress:() => {this.refs.nav.navigator.push({ 
      title: "Where To Go", 
      backButtonTitle: 'Back', 
      component: SuggestionsView 
     }); 
    } 
    }} 
/>); 

То, что я хочу, чтобы this.props.onSuccessView.onRightButtonPress обрабатывать, какой компонент должен быть вызван и обеспечить реквизита. Это возможно?

Если нет, могу ли я вызвать функцию, такую ​​как реквизит: this.props.onSuccessView.getProps()?

Любые предложения приветствуются!

Благодаря

Бен

ответ

1

Это пахнет странно. Вы уверены, что это то, что вы хотите сделать? Почему бы не пройти обратный вызов от родительского компонента, который осведомлен о детях, которых вы показываете здесь, - тогда вы можете использовать ссылки для вас, что вам нужно, схватив детей и действуя на них.

Альтернативно: посмотрите на the example для NavigatorIOS и посмотрите, как используется маршрутизатор - методы pop и push действительно лучше подходят для того, что вы пытаетесь сделать здесь.

+0

Спасибо, это может быть запах. Я не знаю, как будет работать обратный вызов, есть ли у вас примеры? Вы имеете в виду сходство с passProps: {route: this.props.route} или https://github.com/facebook/react-native/blob/master/Examples/UIExplorer/createExamplePage.js? Моя идея состояла в том, что я хочу, чтобы сам взгляд был ответственным за то, где он идет дальше, и данные, а не представление, которое его заставляет. –

1

A. В исходном компоненте

this.props.navigator.push({ 
    title: 'title', 
    component: MyComponent, 
    rightButtonTitle: 'rightButton', 
    passProps: { 
     ref: (component) => {this.pushedComponent = component}, 
    }, 
    onRightButtonPress:() => { 
     // Access View Data 
     this.pushedComponent && this.pushedComponent.props.someObject...; 
    }, 
}); 

B. В толкнул компонента
заменить onRightButtonPress FUNC в толкаемой компоненте.

componentDidMount: function() { 
    // get current route 
    var route = this.props.navigator.navigationContext.currentRoute; 
    // update onRightButtonPress func 
    route.onRightButtonPress = () => { 
     // Access View Data 
     this.props.someObject... 
    }; 
    // component will not rerender 
    this.props.navigator.replace(route); 
}, 
Смежные вопросы