传递给 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
,如果直接请求页面/路由则为false
locals
— 存放任意数据的地方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>