0

例如,当您有一个包含 20 多个函数的大型脚本块并且其中许多函数依赖于某些隐式状态时,例如,假设 x 和 y 是传入的道具,它们将在其他地方更新并且必须被跟踪,那么方法是什么你让这一切井井有条吗?

<script>
 export let a
 export let b

 ...lots more...

function doSomething(a, b) {
  if (x || y) return a + b
  return a - b
}

一种方法是, $: doSomething = function (a, b) {...} 但我发现这会让人感到困惑,并要求用户跟踪这些隐式依赖项的来源——使代码难以理解。你也很容易遇到循环依赖。

另一种方法是使用商店。将所有依赖项放在存储中并在函数中使用它。那么你有$store.x. 但是,这需要在单个组件中使用 store,这可能会让人觉得有点矫枉过正。

我想您也可以尝试使所有这些函数成为纯函数并在调用站点传递所有内容......所以<div onBlur={() => doSomething(a, b, x, y}}。但是我有一些功能需要处理很多事情,并且感觉很繁重(甚至是非 Svelte-y)将所有这些依赖项传递到任何地方,并且可能需要使用很多 $: x = 以确保所有内容都更新。

我能想到的唯一另一件事是将所有这些东西提取到脚本之外的一个模块中,该模块对依赖项有自己的闭包。

4

0 回答 0