我的React Navigation的结构是
DashboardScreen
=> 3 Bottom Tabs (1 out of 3, again have)
=> 2 Bottom Tabs
DashboardScreen
有三个BottomTabs
Main
Profile
Products
,Products
又有两个BottomTabs
a。 AllProducts
b。 SoldProducts
我想做的是,当产品出售时,产品所有者将收到通知,并且我想从onNotificationOpened
导航到DashboardScreen.js
的{{1}}。 SoldProducts
OneSignal
已在onNotificationOpened
中注册。 (据我所知,这是我应该执行OneSignal工作的屏幕,这里还有另外三种情况。)
DashboardScreen.js
DashboardScreen.js
到目前为止我尝试过的解决方案是
useEffect(() => {
if (isLoading) {
loadUserDetail();
}
OneSignal.init(ONE_SIGNAL_APP_ID, {
kOSSettingsKeyAutoPrompt: false,
kOSSettingsKeyInAppLaunchURL: false,
kOSSettingsKeyInFocusDisplayOption: 2,
});
OneSignal.inFocusDisplaying(2);
OneSignal.addEventListener('received', onReceived);
OneSignal.addEventListener('opened', onOpened);
OneSignal.addEventListener('ids', onIds);
}, [isLoading, loadUserDetail, navigation, onOpened]);
const onOpened = useCallback((openResult) => {
const additionalData = openResult.notification.payload.additionalData;
if (additionalData.type === 'sold') {
// From here I want to navigate
console.log('DashboardScreen, Move to Product Tab, and open SOLD PRODUCT TAB, instead of All Products Tab');
}
}, []);
return (
<Tab.Navigator
initialRouteName="Main"
lazy={true}
tabBar={(props) => (
<CustomTabBar />
)}>
<Tab.Screen name="Profile" component={Profile} />
<Tab.Screen name="Main" component={Main} />
<Tab.Screen name="Products" component={Products} />
</Tab.Navigator>
);
但这甚至没有打开navigation.dispatch(
NavigationActions.navigate({
routeName: 'DashboardScreen',
action: NavigationActions.navigate({
routeName: 'Products',
}),
}),
);
上的Products
。
也找到了
DashboardScreen
但是TabActions.jumpTo('Tab')
仅在TabActions
中工作,意味着在TabComponenet
或Main
内部在Profile
之间切换
我们将不胜感激任何帮助。