65 lines
1.2 KiB
JavaScript
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,
|
|
};
|
|
};
|