Чтобы перейти к отдельным экранам на onPress
каждого компонента, добавьте отображаемое имя в массив components
, а затем перейдите по этому экранному имени.
Например, предположим, что настройка вашего маршрутизаторакак показано ниже ( только для примера, не обязательно должно быть одинаковым, важны только имена экранов )
const MainNavigation = createStackNavigator({
"STUDY": {
screen: StudyScreen,
...
},
"GROUPCHAT": {
screen: GroupChatScreen,
...
},
"FINDTUTOR": {
screen: FindTutorScreen,
...
}
})
Добавьте эти имена маршрутов к components
как,
const components = [
{
title: "STUDY",
screen: "STUDY",
image: require("../assets/STUDYCOMPONENT-THUMBNAIL.jpg"),
logo: require("../assets/STUDYCOMPONENT-ICON.png")
},
{
title: "GROUP CHAT",
screen: "GROUPCHAT",
image: require("../assets/GROUPCHATCOMPONENT-THUMBNAIL.jpg"),
logo: require("../assets/GROUPCHATCOMPONENT-ICON.png")
},
...
];
Теперь, если вы хотите добавить onPress
и логику навигации внутри StudyComponent
, измените ее следующим образом
const StudyComponent = props => {
return (
<TouchableOpacity
onPress={this.props.onPress}>
<Container>
<Cover>
<Image source={props.image} />
<Logo source={props.logo} />
<Title>{props.title}</Title>
</Cover>
</Container>
</TouchableOpacity>
);
};
И в SCREEN.JS
используйте ее следующим образом
...
render() {
...
return (
<Container>
<ComponentsContainer>
{components.map((component, index) => (
<StudyComponent
title={component.title}
image={component.image}
logo={component.logo}
onPress={() => {
this.props.navigation.push(component.screen, {
selectedcomponent: component
});
}}
/>
))}
</ComponentsContainer>
</Container>
);
}