本文介绍了单击通知时,将本机导航到特定屏幕的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试在用户点击他们收到的通知时实现导航.我使用 expo-notifications
成功接收通知并接受来自 API 的数据(路由),但当用户点击通知时无法导航到另一个屏幕.
I am trying to implement navigation upon the user click on a notification that they have received. I am successfully receiving the notifications with expo-notifications
and accept data (routes) from API but unable to navigate to another screen when user clicks on a notification.
使用通知:
export default useNotifications = () => {
...
useEffect(() => {
registerForPushNotificationsAsync().then((token) => {
setExpoPushToken(token);
alert(token);
});
notificationListener.current = Notifications.addNotificationReceivedListener(
(notification) => {
setNotification(notification);
console.log(notification);
}
);
responseListener.current = Notifications.addNotificationResponseReceivedListener(
(response) => {
//notification is received OK
console.log("opened");
//here I want to navigate to another screen using rootnavigation
navigation.navigate("Account");
//alert shows fine
alert("ok");
}
);
return () => {
Notifications.removeNotificationSubscription(notificationListener);
Notifications.removeNotificationSubscription(responseListener);
};
}, []);
};
导航器:
const SettingsNavigation = ({ component }) => {
useNotifications();
return (
<Stack.Navigator mode="card" screenOptions={{ headerShown: false }}>
<Stack.Screen
name="Main"
component={component}
options={{ title: "Home" }}
/>
<Stack.Screen
name="Timetable"
component={TimetableScreenBoss}
options={menuOptions("Schedule")}
/>
<Stack.Screen
name="Account"
component={AccountNavigator}
options={menuOptions("Account", false)}
/>
</Stack.Navigator>
);
};
根导航:
import React from "react";
export const navigationRef = React.createRef();
const navigate = (name, params) =>
navigationRef.current?.navigate(name, params);
export default {
navigate,
};
app.js:
import { navigationRef } from "./app/navigation/rootNavigation"; //rootnavigation
<NavigationContainer navigationRef={navigationRef}>
<CustomNavigator>
</NavigationContainer>
推荐答案
假设你使用的是 react-navigation
,NavigationContainer
接受一个普通的 ref
代码>道具:
Assuming you are using react-navigation
, the NavigationContainer
accepts a normal ref
prop:
<NavigationContainer ref={navigationRef}>
<CustomNavigator>
</NavigationContainer>
这篇关于单击通知时,将本机导航到特定屏幕的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!