传递给 handle 的 event 对象与传递给 +server.js 文件中的 API 路由、+page.server.js 文件中的表单 actions以及 +page.server.js 和 +layout.server.js 中的 load 函数的对象是相同的 — 都是 RequestEvent 的实例。
它包含许多有用的属性和方法,其中一些我们已经遇到过:
cookies— cookies APIfetch— 标准的 Fetch API,具有额外的功能getClientAddress()— 获取客户端 IP 地址的函数isDataRequest— 如果浏览器在客户端导航期间请求页面数据则为true,如果直接请求页面/路由则为falselocals— 存放任意数据的地方params— 路由参数request— Request 对象route— 一个具有id属性的对象,表示匹配到的路由setHeaders(...)— 用于在响应中设置 HTTP 头的函数url— 表示当前请求的 URL 对象
一个有用的模式是在 handle 中向 event.locals 添加一些数据,这样就可以在后续的 load 函数中读取这些数据:
src/hooks.server
export async function handle({ event, resolve }) {
event.locals.answer = 42;
return await resolve(event);
}src/routes/+page.server
export function load(event) {
return {
message: `the answer is ${event.locals.answer}`
};
}上一页 下一页
1
2
3
4
5
<script>
let { data } = $props();</script>
<h1>{data.message}</h1>