代码拉取完成,页面将自动刷新
taro的router, 自动生成对应的页面属性ts和路由拦截
npm i pd-taro-router -D
或改package.json
"pd-taro-router": "git+https://gitee.com/zhengjinpeng/pd-taro-router.git#v1.0.1",
/config/index.js
const config = {
plugins: [
["pd-taro-router"]
]
}
每个页面里都得加个文件 如首页创建文件/src/pages/index/route.config.ts `` /** 路由url参数 / export type PageParams = { id: number; title: string; }; /* 路由data参数 / export type PageData = { users: { id: number; name: string; sex: "boy" | "girl"; }[]; }; /* 路由返回页面参数 / export type PageBackData = { id: number; name: string; }; /* 路由中间件自定义参数 */ export const middlewareConfig = { mustLogin: true, role: [1, 2, 3], };
生成文件在`/types/taro-route.config.d.ts`
### 编写自定义跳转
重写taro的页面跳转函数
```ts
import Taro, { useRouter } from "@tarojs/taro";
import type { RoutePageData } from "../../types/taro-route.config";
const pages: {
page: string;
data: any;
}[] = [];
const beforePushPage = (routeData: RoutePageData) => {
let url = routeData.url;
let page = "";
if (url.includes("?")) {
page = url.split("?")[0];
} else {
page = url;
}
let params = routeData.params || {};
if (Object.keys(params).length) {
if (!url.includes("?")) {
url += "?";
}
Object.keys(params).forEach((key) => {
let value = params[key];
if (typeof value === "object") {
console.error("params禁止上传对象:"+key);
}
url += `&${key}=${params[key]}`;
});
}
pages.push({
page: page,
data: routeData.data,
});
return {
url,
};
};
export const navigateTo = (routeData: RoutePageData) => {
const { url } = beforePushPage(routeData);
Taro.navigateTo({
url,
success: routeData.success,
fail: (res) => {
routeData.fail?.(res);
pages.pop();
},
});
};
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。