Вот подробный ответ из blogpost библиотеки react-native-navigation
developer .
Итак, теперь мы хотим включить следующее поведение: послепользователь нажимает на текст, приложение нажимает на экран ViewPost
.Позже будет очень легко прикрепить ту же функцию к элементу списка вместо текста.Чтобы вставить новый экран в стек навигации этого экрана, мы будем использовать Navigation.push
. В новом API этот метод ожидает получения текущего componentId, который можно найти в props.componentID .Поэтому в PostsList.js
мы создаем функцию pushViewPostScreen
и присоединяем ее к событию onPress текста.
import React, {PureComponent} from 'react';
import {View, Text} from 'react-native-ui-lib';
import PropTypes from 'prop-types';
import {Navigation} from 'react-native-navigation';
class PostsList extends PureComponent {
static propTypes = {
navigator: PropTypes.object,
componentId: PropTypes.string
};
constructor(props) {
super(props);
this.pushViewPostScreen = this.pushViewPostScreen.bind(this);
}
pushViewPostScreen() {
// We pass the componentId to Navigation.push
// to reference the which component will be pushed
// to the navigation stack
Navigation.push(this.props.componentId, {
component: {
name: 'blog.ViewPost',
passProps: {
text: 'Some props that we are passing'
},
options: {
topBar: {
title: {
text: 'Post1'
}
}
}
}
});
}
render() {
return (
<View flex center bg-blue60>
<Text onPress={this.pushViewPostScreen}>Posts List Screen</Text>
</View>
);
}
}
export default PostsList;
В официальных документах кажется, что Screen API, отвечающий за нажатие, нажатие и изменение навигации, будет доступно через *Модуль 1025 * всегда ожидает, что props.componentId
получит ссылку на компонент.