Svelte 中 context 传值为什么子组件拿不到?
我在父组件里用 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
如果还是不行的话,可能要注意两点:
1. 确保Child组件确实是Parent的直接子组件
2. 检查有没有用
我之前熬夜debug的时候就是因为不小心把setContext放在了onMount里,结果死活拿不到值,差点把自己整崩溃...