Expo Navigation:无需<Link>组件,在验证函数内实现页面导航
Expo Router 实现验证后跳转的方案
完全可以做到,Expo Router(也就是你说的Expo Navigation)支持在表单提交函数里先完成验证,通过后再触发页面跳转,核心就是用navigation.navigate()或者Expo Router原生的useRouter()钩子,具体两种实现方式:
1. 用传统navigation对象(适配React Navigation组件)
如果你的页面是通过Stack.Screen这类方式渲染、能拿到navigation属性的,直接在handleSubmitForm里先做验证,过了再调导航:
const handleSubmitForm = () => { // 先跑表单验证逻辑 const isFormValid = checkForm(); // 你的自定义验证函数 if (!isFormValid) { alert('表单填错了,再检查下'); return; } // 验证通过,跳转页面 navigation.navigate('目标页面名称'); };
2. 用Expo Router的useRouter()钩子(推荐原生方式)
要是你用的是Expo Router的文件系统路由(比如app/目录下的页面),更推荐用useRouter()拿路由实例,然后用push()或replace()跳转:
import { useRouter } from 'expo-router'; const router = useRouter(); const handleSubmitForm = async () => { // 支持异步验证,比如调用接口校验手机号 const isFormValid = await checkFormWithApi(); if (!isFormValid) { // 给用户提示错误信息 return; } // 验证通过,跳转到目标页面路径 router.push('/target-page'); // 要是注册后不想让用户返回注册页,用replace替换当前页面 // router.replace('/target-page'); };
核心逻辑就是先验证,不通过就终止,通过了再调用导航方法,完全满足你的需求。
内容的提问来源于stack exchange,提问作者Nik
相关产品推荐
相关产品推荐

