【问题标题】:Assignment of reactive value inside reactive statement got hoisted?反应性语句中反应性值的分配被提升了?
【发布时间】:2021-03-10 11:39:11
【问题描述】:

Svelte 社区的新手并尝试了解框架(编译器?)。 所以我尝试了以下代码: App.svelte:

<script>
    let count = 1;
    $: {
        console.log(`Before A: ${count}`);
        count = 2;
        console.log(`A: ${count}`);
    }
    $: {
        console.log(`B: ${count}`);
    }
    $: {
        console.log(`Before C: ${count}`);
        count = 3;
        console.log(`C: ${count}`);
    }
    $: {
        console.log(`D: ${count}`);
    }
</script>

可以在here找到一个正在运行的原型。

请检查从控制台找到代码的输出。

输出:

"Before A: 1"
"A: 2"
"Before C: 2"
"C: 3"
"B: 3"
"D: 3"

似乎包括反应值分配在内的反应性语句已被提升。

是否有关于该行为的参考并解释原因?

【问题讨论】:

    标签: svelte-3


    【解决方案1】:

    引用不和谐中 fs99 的答案:

    所以基本上所有的反应式语句都是从上到下运行的,除非它们依赖于首先运行的其他反应式语句。在这种情况下,A 和 C 修改计数,因此 A 先运行,然后是 C,然后是其他:再次从上到下,B 和 D。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-18
      • 1970-01-01
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 2023-02-06
      • 2019-03-22
      • 1970-01-01
      相关资源
      最近更新 更多