【React Native】路由跳转

  • 跳转的路径,就在href里写/details

  • 路径都是相对于app目录来写的,也就是说app目录就是/

  • 很多时候,需要跳转的组件比较复杂。比方说,要在里面要嵌套按钮,或者其他东西。这种情况下,就可以在Link组件里加个asChild

    import { Link } from "expo-router";
    import { StyleSheet, Text, TouchableOpacity, View } from "react-native";

    export default function Index() {
    return (

    这里是首页

    跳转到详情页(Link)



    跳转到详情页(Link + asChild)



    );
    }

    const styles = StyleSheet.create({
    container: {
    flex: 1,
    backgroundColor: "#fff",
    alignItems: "center",
    justifyContent: "center",
    },
    title: {
    fontSize: 40,
    fontWeight: "bold",
    color: "#e29447",
    },
    link: {
    marginTop: 20,
    fontSize: 20,
    color: "#1f99b0",
    },
    buttonText: {
    marginTop: 20,
    fontSize: 20,
    color: "#ff7f6f",
    },
    });

    import { Link } from "expo-router";
    import { StyleSheet, Text, View } from "react-native";

    export default function Details() {
    return (

    这里是详情页

    复制代码
        <Link href="../" style={styles.backText}>
          返回
        </Link>
      </View>
    );

    }

    const styles = StyleSheet.create({
    container: {
    flex: 1,
    backgroundColor: "#fff",
    alignItems: "center",
    justifyContent: "center",
    },
    title: {
    fontSize: 40,
    fontWeight: "bold",
    color: "#4f9df7",
    },
    backText: {
    marginTop: 20,
    fontSize: 20,
    color: "#67c1b5",
    },
    });

router

方法 作用 说明
router.navigate 跳转到指定页面,最常用。 如果目标页面已在Stack中,直接跳转到现有实例,否则新增页面到Stack。
router.replace 替换掉Stack中所有页面。 因为Stack里之前的页面都被替换了,无法返回上一页。
router.push 强制新增页面到Stack。 无论目标页面是否存在,始终在Stack里新增一个页面。
router.dismiss 关闭当前的页面,返回Stack里的上一个页面。
router.dismissAll 关闭所有中间页面,返回Stack根页面。

此外还有一些不太常用的方法:

  • router.dismiss(2),可以在dismiss里加数字,表示返回几层。

  • router.dismissTo('/'),表示从当前页返回到目标页面,并关闭中间页面。

    import { useRouter } from "expo-router";
    import { StyleSheet, Text, TouchableOpacity, View } from "react-native";

    export default function Index() {
    const router = useRouter();

    复制代码
    return (
      <View style={styles.container}>
        <Text style={styles.title}>这里是首页</Text>
    
        <TouchableOpacity onPress={() => router.navigate('/details')}>
          <Text style={styles.buttonText}>
            跳转(navigate )
          </Text>
        </TouchableOpacity>
        <TouchableOpacity onPress={() => router.replace('/details')}>
          <Text style={styles.buttonText}>
            替换(replace)
          </Text>
        </TouchableOpacity>
      </View>
    );

    }

    const styles = StyleSheet.create({
    container: {
    flex: 1,
    backgroundColor: "#fff",
    alignItems: "center",
    justifyContent: "center",
    },
    title: {
    fontSize: 40,
    fontWeight: "bold",
    color: "#e29447",
    },
    buttonText: {
    marginTop: 20,
    fontSize: 25,
    color: "#ff7f6f",
    },
    });

相关推荐
山河木马2 小时前
渲染管线-计算得到gl_Position(顶点着色器)之后续GPU流程
javascript·webgl·图形学
竹林8183 小时前
用 The Graph 查询链上数据实战:从手搓 RPC 到 Subgraph,我的 NFT 项目数据加载快了 10 倍
前端·javascript
kyriewen6 小时前
别再每次都 Google 了:我整理了前端日常最常踩的 10 个 Git 坑,附速查表
前端·javascript·git
SmartBoyW7 小时前
深入ECMAScript规范:彻底搞懂JS隐式类型转换与底层ToPrimitive机制
前端·javascript
光影少年7 小时前
react navite 跨端核心原理
前端·react native·react.js
用户852495071847 小时前
解密 JavaScript 中的 this:谁才是真正的调用者?
javascript·面试
Heo7 小时前
Vite进阶用法详解
前端·javascript·面试
铁皮饭盒9 小时前
Next.js 风格路由内置?Bun FileSystemRouter 凭啥这么香
javascript
小林ixn10 小时前
别再背八股了!从 5 个真实场景彻底搞懂 JavaScript 的 this
javascript
东风破_10 小时前
JavaScript 面试常考的字符串算法:从反转字符串到回文判断
前端·javascript