You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 22:12:10