反应本地,从根导航到嵌套选项卡

时间:2020-10-27 15:28:29

标签: react-native react-navigation react-navigation-bottom-tab

我的React Navigation的结构是

DashboardScreen => 3 Bottom Tabs (1 out of 3, again have) => 2 Bottom Tabs

DashboardScreen有三个BottomTabs

  1. Main

  2. Profile

  3. ProductsProducts又有两个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中工作,意味着在TabComponenetMain内部在Profile之间切换

我们将不胜感激任何帮助。

0 个答案:

没有答案