#react-native #react-navigation #react-navigation-bottom-tab
#react-native #react-навигация #react-navigation-bottom-tab
Вопрос:
Структура моей навигации по реакции
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
я хочу перейти к SoldProducts
нему. OneSignal
onNotificationOpened
зарегистрирован в DashboardScreen.js
. (Насколько я знаю, это экран, на котором я должен реализовать работу своего OneSignal, у меня здесь есть еще три случая.)
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
on DashboardScreen
.
Также найдено
TabActions.jumpTo('Tab')
но TabActions
работает только в TabComponenet
, означает внутри Main
или Profile
для переключения между Tabs
Любая помощь будет высоко оценена.
Комментарии:
1. вы пробовали navigation.navigate(‘Products’) ? переключает ли она вкладку?
2. Да, я пытался. Но
navigation.navigate('Products')
fromDashboardScreen.js
не работает. Это не навигация и не выдает никаких ошибок.