Skip to content

快速开始

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。

Released under the MIT License.