分量差异

时间:2019-08-06 19:48:14

标签: svelte svelte-component

这个问题可能很容易。

假设以下Svelte组件:

{#if condition}
  <A>
{:else}
  <B>
{/if}

其中A和B是其他Svelte组件。问题是:

  • B是在外科上与A有所不同吗?
  • A是否完全由B取代?

这个问题来自两个用例:

    如前所述,可以通过分支来实现穷人路由。当路由组件足够相似时,尽量减少它们之间的更新很有趣
  • 在有些情况下,B是A且有一些扭曲,我不确定是让编译器执行工作还是使用带有额外参数的父组件来编码A和B之间的差异:
...
...
{#if condition}
  ... The A-only part
{/if}
...
{#if other condition}
 ... The B-only part
{/if}
...

1 个答案:

答案 0 :(得分:3)

与虚拟DOM算法一样,

A完全被B取代。这仅部分出于简单性考虑,也出于正确性考虑–即使A和B具有相似的结构,它们在概念上也有所不同,因此重要的是,新组件不要继承处于该状态的任何状态。旧的DOM(正在进行的CSS动画,焦点状态等)。 “外科手术”适用于组件内 的状态更改。