【发布时间】:2019-01-09 22:14:47
【问题描述】:
我正在使用react navigation v3 开发一个 React Native 项目(使用 Expo 完成)。所以,现在我决定启用实时push notifications provided by Expo。我的目标是与推送通知本身一起提交一些自定义数据,然后,一旦它进入设备并打开通知以将应用程序导航/路由/重定向到我定义的特定屏幕。我已经配置了通知,我得到了博览会令牌,我收到了通知,它进入 handler 但是当我尝试应用我在整个应用程序中使用的导航时:
this.props.navigation.navigate('RouteName', {data:{...}})
我得到未定义。我想我们不知何故不在反应导航的背景下,这就是为什么需要一些其他方法的原因。我只是不知道它是什么。
我的应用结构如下:
HomeStack.js
import { createStackNavigator } from 'react-navigation';
import HomeScreen from '../screens/HomeScreen'
import MailboxItemsScreen from '../screens/MailboxItemsScreen'
import MailboxItemDetailsScreen from '../screens/MailboxItemDetailsScreen'
export default createStackNavigator({
Home: HomeScreen,
MailboxItems: MailboxItemsScreen,
MailboxItemDetails : MailboxItemDetailsScreen
});
SettingsStack.js
import { createStackNavigator } from 'react-navigation';
import SettingsScreen from '../screens/SettingsScreen'
export default createStackNavigator({
Settings: SettingsScreen
});
AppNavigator.js
import React from 'react';
import { createBottomTabNavigator, createAppContainer } from 'react-navigation';
import Icon from 'react-native-vector-icons/Ionicons'
import HomeStack from './HomeStack'
import SettingsStack from './SettingsStack'
const TabNavigator = createBottomTabNavigator({
Home: {
screen: HomeStack,
navigationOptions: {
tabBarIcon:({tintColor})=>(
<Icon name="ios-home" color={tintColor} size={24}/>
)
}
},
Settings: {
screen: SettingsStack,
navigationOptions: {
tabBarIcon:({tintColor})=>(
<Icon name="ios-settings" color={tintColor} size={24}/>
)
}
}
});
export default createAppContainer(TabNavigator);
然后我在我的 App.js 中使用 TabNavigator。这是很常见的结构,我只是不知道如何在我的推送通知处理程序方法中进行屏幕之间的导航。
【问题讨论】:
标签: react-native