1.0.4 • Published 4 months ago
react-browser-router-store v1.0.4
react-browser-router-store
封装
react-router-dom v6
简单、强大的react
路由工具
功能
- 路由切换提供过渡或动画效果
- 缓存路由组件
- 可以给路由提供多个路径
- 重定向
- 高阶组件,对路由包装
- 路由拆分,将路由组件拆成多个小组件
- 路由切换前后,提供拦截功能
- 动态路由,在当前路由表中添加路由
- 路由仓库,每个路由拥有一个全局仓库
组件
Transition
过渡组件ViewTransition
视图过渡组件Keepalive
缓存组件Show
管理promise
的组件ShowList
Resolve
管理多个promise
组件ShowOrder
管理多个Show
组件Await
形式意义的async
函数组件defineAsyncComponent
定义异步组件
示例
import {createBrowserRouter, alias, transition, keepalive, wrapper} from "react-browser-router-store";
const router = createBrowserRouter([
{
path: "/",
element: <Index/>,
meta: {
[alias]: ["/index", "/main"],
[transition]: {
type: "transition",
},
[keepalive]: {
include: () => true,
},
[wrapper]: [IndexWrapper]
}
}
]);
router.beforeEach(async (to, from, navigateGuard) => {
if (to.pathname === "/foo") {
navigateGuard.next("/")
}
});
router.afterEach((to) => {
const title = to.meta.title;
if (typeof title === "string") {
document.title = title;
}
});
import {Await} from "react-browser-router-store";
function Foo() {
return (
<Await loading={<h1>loading...</h1>}>
<Bar/>
</Await>
);
}
async function Bar() {
const data = await new Promise(resolve => {
setTimeout(() => {
resolve("hello world");
}, 1000);
});
return (
<div>
<h1>{data}</h1>
</div>
);
}