Svelte 中 context 传值为什么子组件拿不到?

利云🍀 阅读 4

我在父组件里用 setContext('theme', 'dark') 设置了上下文,但在嵌套的子组件里用 getContext('theme') 却返回 undefined,这是为啥?

我确认子组件是在父组件内部使用的,而且没有跨组件树的情况。是不是 setContext 必须在组件初始化时调用?下面是我的代码:

// 父组件 Parent.svelte
import { setContext } from 'svelte';

setContext('theme', 'dark');
// 子组件 Child.svelte
import { getContext } from 'svelte';

const theme = getContext('theme');
console.log(theme); // 输出 undefined
我来解答 赞 4 收藏
二维码
手机扫码查看
1 条解答
令狐美玲
啊哈!这个问题我遇到过,setContext确实必须在组件初始化时调用!在Svelte里,context的设置必须在组件的






如果还是不行的话,可能要注意两点:
1. 确保Child组件确实是Parent的直接子组件
2. 检查有没有用这种动态组件包裹了Child组件

我之前熬夜debug的时候就是因为不小心把setContext放在了onMount里,结果死活拿不到值,差点把自己整崩溃...
点赞
2026-03-10 10:02