Files
rn-app/hooks/useRouter.js
2025-08-27 19:20:10 +08:00

65 lines
1.2 KiB
JavaScript

import {
useIsFocused,
useRoute,
useNavigation,
} from '@react-navigation/native';
import AsyncStorage from '@/storage/index';
export const useRouter = props => {
const router = useNavigation();
console.log('🚀 ~ useRouter ~ router:', router)
const isFocused = useIsFocused();
const route = useRoute();
const linkTo = (path, params) => {
router.navigate(path, params);
};
const goBack = () => {
router.goBack();
};
const setParams = params => {
router.setParams(params);
};
const getParams = () => {
return router.getState().params;
};
// 获取当前路由
const getCurrentRoute = () => {
return router.getState().routes[router.getState().index].name;
};
// 重置所有路由
const resetAllRoutes = (name) => {
router.reset({
index: 0,
routes: [{ name: name || 'Guide' }],
});
};
// 判断是否 登录了再跳转 如果 没有登录就去登录页面
const isLogin = () => {
const user = AsyncStorage.getItemAsync('user');
if (!user) {
router.navigate('Login');
}
};
return {
router,
isFocused,
route,
linkTo,
goBack,
setParams,
getParams,
isLogin,
getCurrentRoute,
resetAllRoutes,
};
};