Initial commit
This commit is contained in:
64
hooks/useRouter.js
Normal file
64
hooks/useRouter.js
Normal file
@@ -0,0 +1,64 @@
|
||||
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,
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user