快速开始
bash
pnpm add @revfanc/guard在应用入口、路由器第一次写 History 之前安装:
ts
import { install } from "@revfanc/guard"
install()默认 scope 匹配所有 URL,因此安装时的当前 entry 会立即受到保护。只保护 Landing:
ts
install({
scope: (url) =>
url.pathname === "/landing" || url.pathname.startsWith("/landing/"),
})该条件不会匹配 /landing-page。
需要守卫时将 Handler 压栈:
ts
import { create } from "@revfanc/guard"
const stop = create(async (resolve) => {
if (await confirmLeaving()) resolve()
})
stop()每次 Back 只调用栈顶 Handler。最后一层调用 resolve()后继续用户最初的 Back; 仍有下层时停留原位,等待下一次操作。Forward 不调用 Handler。