文档地址 @wakeapp/router 路由库
怎么做到路由解耦?使用命名路由,不要耦合实际路由,
// 反模式
const goDetail = (item) => {
protectedMailBox.send('sub-packages/protocol-package/pages/detail/index', 'item', item);
wxApi.navigateTo({
url: '/sub-packages/protocol-package/pages/detail/index',
});
显示声明路由参数,并支持 typescript 检查
路由参数 key 不能包含特殊字符,比如 $
支持多端。不同端能力不一样,比如 H5 页面可能会被刷新,保存在内存中的数据会被清理,如果保存在 localstorage,销毁实际也比较难定
复杂场景举例:地址选择器、下单页面
页面之间只能通过参数通信,不能直接访问页面实例。
// 反例
onAddressSelected = (address) => {
if (this.mailKey) {
// 当前页面信息
const pages = Taro.getCurrentPages();
if (!!pages && pages.length > 1) {
const lastru = pages[pages.length - 2].route;
ProtectedMailBox.send(lastru, this.mailKey, address);
}
wxApi.$navigateBack();
}
};
不要传递大量数据
如果与上一个页面通信
旧路由兼容方案。