路由功能

本篇将介绍如何在 Taro 中配置路由、实现路由跳转和传参等方法。

路由配置

Taro 遵循微信小程序的路由规范。只需要修改全局配置的 pages 属性,配置为 Taro 应用中每个页面的路径即可。

Taro 没有实现浏览器的 history API,因此不能使用 react-router、vue-router 等路由库。

路由跳转

可以通过 Taro 提供的 API 来跳转到目的页面。路由 API 的详细用法请查看 API 文档的 导航 章节。

示例代码

  1. // 跳转到目的页面,打开新页面
  2. Taro.navigateTo({
  3. url: '/pages/page/path/name'
  4. })
  5. // 跳转到目的页面,在当前页面打开
  6. Taro.redirectTo({
  7. url: '/pages/page/path/name'
  8. })

路由传参

可以通过在所有跳转的 url 后面添加查询字符串参数进行跳转传参,例如:

  1. // 传入参数 id=2&type=test
  2. Taro.navigateTo({
  3. url: '/pages/page/path/name?id=2&type=test'
  4. })

获取路由参数

跳转成功后,在目标页面的生命周期方法中,可以通过 Taro.getCurrentInstance().router.params 获取路由参数。

  • 路由功能 - 图1React
  • 路由功能 - 图2Vue

示例代码

  1. import React, { Component } from 'react'
  2. import { View } from '@tarojs/components'
  3. class Index extends Component {
  4. // 建议在页面初始化时把 getCurrentInstance() 的结果保存下来供后面使用,
  5. // 而不是频繁地调用此 API
  6. $instance = getCurrentInstance()
  7. componentDidMount () {
  8. // 获取路由参数
  9. console.log($instance.router.params) // 输出 { id: 2, type: 'test' }
  10. }
  11. render () {
  12. return (
  13. <View className='index' />
  14. )
  15. }
  16. }
  17. export default Index

示例代码

  1. <template>
  2. <view className='index' />
  3. </template>
  4. <script>
  5. import Taro from '@tarojs/taro'
  6. export default {
  7. created () {
  8. // 建议在页面初始化时把 getCurrentInstance() 的结果保存下来供后面使用,
  9. // 而不是频繁地调用此 API
  10. this.$instance = Taro.getCurrentInstance()
  11. },
  12. mounted () {
  13. // 获取路由参数
  14. console.log(this.$instance.router.params) // 输出 { id: 2, type: 'test' }
  15. }
  16. }
  17. </script>