SvelteKit中如何在Form Actions中访问父级数据?
在SvelteKit的Form Actions中访问父级布局的IMPORTANT_DATA?
直接说结论:不能直接访问load函数中获取的IMPORTANT_DATA,但可以通过以下方式拿到相同的数据:
load函数和Form Actions属于独立的执行上下文——load是在页面渲染时触发,而Form Actions是在表单提交时触发,两者的请求流程不共享数据。所以你没法直接在logout操作里引用load函数里拿到的IMPORTANT_DATA。
解决方案
1. 在Actions中重新调用parent()
和load函数里的方式一样,你可以在logout的event参数上调用parent()方法,直接获取父级布局的数据:
/** @type {import('./$types').Actions} */ export const actions = { logout: async (event) => { const { IMPORTANT_DATA } = await event.parent(); // 这里就可以使用IMPORTANT_DATA了 } };
2. 从原始请求数据重新生成(可选)
如果父级布局的IMPORTANT_DATA是基于请求的会话信息、用户凭证等生成的,你也可以直接从event中提取这些原始数据,重新生成IMPORTANT_DATA,避免重复调用parent()。但这种方式需要你清楚父级load函数的实现逻辑。
内容的提问来源于stack exchange,提问作者Rokas Rudgalvis
相关产品推荐
相关产品推荐

