Svelte - 将变量从父组件传递到其所有子组件

Mac*_*zyk 2 javascript svelte

我需要将数据从父组件传递到所有子组件,可能是链下的 3-4 级。为此使用事件并不是一个非常优雅的解决方案。

有没有一种方法可以定义组件的所有子组件都可以访问的全局变量?

我也不想使用参数,因为会有很多重复。

Ste*_*aes 7

正是针对这个问题,ContextAPISvelte 中包含了

在你的“父母”中,你做

import { setContext } from 'svelte'

setContext('my-var', variable)
Run Code Online (Sandbox Code Playgroud)

对于任何您需要的孩子,您可以这样做:

import { getContext } from 'svelte'

const variable = getContext('my-var')
Run Code Online (Sandbox Code Playgroud)

此技术使my-var在所有后代中都可变。

请注意,如果您需要传递存储而不是常规变量,则此变量不是反应性的。

这是在文档中