gpt4 book ai didi

javascript - Svelte:如果 block 条件更改后未评估 block 条件,则否则

转载 作者:行者123 更新时间:2023-12-05 00:29:47 25 4
gpt4 key购买 nike

编辑:这是一个错误 https://github.com/sveltejs/svelte/pull/7043
考虑 the following example每当foo 时,就会期望在第二条水平规则下呈现“条形”。是 falsebar[0]true .

<script>
let foo = true
let bar = [false];
</script>

<button on:click={() => foo = !foo}>
Toggle foo
</button>
<button on:click={() => bar[0] = !bar[0]}>
Toggle bar
</button>

<hr>
{@html `foo: ${foo}, bar: ${bar.every(x => x)}`}
<hr>

{#if foo}
foo!
{:else if bar.every(x => x)}
bar!
{/if}
但是,如果执行以下步骤, react 似乎会中断:
  • 设置 footrue
  • 设置 bar[0]true
  • 设置 foofalse

  • 即使 else if block 条件满足。如果 else if 条件只是 bar[0],则不是这种情况。 ,所以似乎使用函数是它未被评估的原因。 bar 时的类似行为是 true之前 foo被切换和 falsefoo 之后再次切换,意外地“栏”呈现在底部。
    foo 时可以观察到相同的效果。在 null 之间切换和 []else if条件为 Array.isArray(bar) .
    这是一个错误还是我错过了什么?

    最佳答案

    当您更改 foo to true 时,它并不是真正的错误,它在您的场景中有点预期行为然后 bar to true现在栏已设置,更改时 foo to false再次bar didn't change如果你考虑它来触发 react !
    解决方法是在任何值发生更改时自行触发它:

    {#key foo || bar}
    {#if foo}
    foo!
    {:else if bar.every(x => x)}
    bar!
    {/if}
    {/key}
    这是一个有效的 repl

    关于javascript - Svelte:如果 block 条件更改后未评估 block 条件,则否则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70439099/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com