taro之路由功能

taro 页面路由管理

前端路由库的基本原理是监听 popstate 或 hashchange 事件触发后,读取 location 对象对视图进行操控更新。 Taro 为了支持前端路由库的使用,在运行时中引入了 histroylocation 对象的实现,且尽可能与 Web 端规范对齐,你可以在 window 对象上访问到 history 和 location 对象。

我们将 history 和 location 对象统称为页面路由状态。

小程序天然支持多页面(pages数组),Taro 并非以整个应用为一个路由系统,而是顺应小程序规范以页面维度进行路由管理。每当切换页面时,会将当前页面的页面路由状态缓存。跳转至新页面后会重新创建页面路由状态,并挂载在 window 对象上。当返回上一级页面时,会重新将当前页面的页面路由状态挂载到 window 对象中。

你可以在 “示例 DEMO” 中观察页面切换过程中,history 与 location 对象的变化.

需要说明的是,location 对象仅描述当前页面的链接状态,页面的跳转仍需要调用 Taro.navigateTo() 方法。

页面跳转

// ❌ 错误window.location.assign('...')window.location.href = '...' // 无法实现页面跳转,但可以重新赋值// ✅ 正确Taro.navigateTo({ url: '...' })

页面路由初始化

当通过指定 url 进行页面跳转,进入新页面后,页面路由状态会初始化,例如:

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

此时可以从 location.href 上读取到完整链接信息 https://taro.com/pages/page/path/name?id=2&type=test#a=1&b=2,此时 history.state 为:

{  "state": null,  "title": "",  "url": "https://taro.com/pages/page/path/name?id=2&type=test#a=1&b=2"}

使用路由库

信息

Taro 需要升级至 v3.6

应用配置

在路由库中,诸如<Link> 组件内部会动态生成 <a> 标签,因此需要引入 @tarojs/plugin-html 插件以支持在 Taro 中使用 html 标签开发组件。

config/index.js

{  "plugins": ["@tarojs/plugin-html"]}

当 Taro DOM 序列化数据的 nn 字段为 HTML 标签时,会映射为对应的小程序组件名称。由于无法提前预知动态标签,因此需要应用显式告知可能会使用到的动态标签。例如在应用中塞入一个无样式的标签名即可:

<View>  <a></a></View>

代码示例

  • React

  • Vue

app.js

import { createApp } from 'vue'import { createWebHistory } from 'vue-router'// 自定义组件import Home from './components/home.vue'import Tab1 from './components/tab-1.vue'import Tab2 from './components/tab-2.vue'import Tab3 from './components/tab-3.vue'const routes = [  { path: '/', component: Home },  { path: '/tab1', component: Tab1 },  { path: '/tab2', component: Tab2 },  { path: '/tab3/:groupId/:id', component: Tab3 },]const router = createRouter({  history: createWebHistory(),  routes,})const App = createApp({  onShow(options) {},})App.use(router)export default App

/pages/index/index.vue

<template>  <view>    <view>      <a></a>      <view>        <view class="tab-box">          <router-link class="tab-item" to="/" replace>Home</router-link>          <router-link class="tab-item" to="/tab1?name=advancedcat&from=china" replace>Tab 1</router-link>          <router-link class="tab-item" to="/tab2">Tab 2</router-link>          <router-link class="tab-item" to="/tab3/1234/8765">Tab 3</router-link>          <router-link class="tab-item" :to="{ name: 'user', params: { id: '9876' }}">User</router-link>        </view>        <router-view></router-view>      </view>    </view>  </view></template><script setup></script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Taro是一个用于快速构建跨平台应用的框架,它底层基于React和Vue进行封装,提供了统一的API和开发体验。如果你想在Taro项目中使用Vue路由,你可以按照以下步骤进行: 1. **安装依赖**: 首先确保你在项目中安装了`@tarojs/router`和`vue-router`库。如果你使用的是Vue 2.x,可以使用以下命令: ``` npm install @tarojs/router vue-router ``` 或者如果用的是Vue 3.x: ``` npm install @tarojs/router@next vue-router@next ``` 2. **引入并配置**: 在`config/router.js`文件中,引入`vue-router`并配置路由规则。这个文件通常会根据你的应用结构生成,但基本内容如下: ```javascript import Vue from 'vue'; import VueRouter from 'vue-router'; import { createApp } from '@tarojs/app'; const app = createApp(Vue); // 注册Vue Router app.use(VueRouter); // 定义路由 const routes = [/* ...你的路由配置... */]; const router = new VueRouter({ routes }); // 将路由挂载到全局 app.mount('#root', router); ``` 3. **创建路由组件**: 按照Vue的约定,为每个路由创建一个对应的组件。例如: ```vue // 路由组件文件(如pages/index.vue) <template> <div>Index Page</div> </template> <script> export default { name: 'IndexPage' }; </script> ``` 4. **导航**: 在需要导航的地方,你可以使用`this.$router.push`或`this.$router.replace`方法。 5. **守卫**: 如果需要在路由变化前或后执行一些操作,可以使用`beforeEach`、` afterEach`等生命周期钩子。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瞬间的醒悟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值