Svelte 标签 - 不要重新加载/破坏数据

Tim*_*Lee 3 javascript templating svelte

我正在使用此处描述的细长选项卡组件:

https://svelte.dev/repl/8e68120858e5322272dc9136c4bb79cc?version=3.5.1

在两个选项卡中,我有以下苗条的模板代码:

<TabPanel>
    <Filter/>
    <div id='to-filter' class='scroll-container'>
        {#each value.items as item, i}
                <Item 
                itemFilter={item.name}  
                itemDay={item.itemDay} 
                itemMonth={item.itemMonth} 
                itemYear={item.itemYear} 
                itemCity={item.itemCity} 
                itemCountry={item.itemCountry} 
                itemVenue={item.venue}
                itemLink={item.link}
                itemDotw={itemDatesOnly[i].itemDotw}
                />
        {/each}
    </div>
</TabPanel>
Run Code Online (Sandbox Code Playgroud)

每次我点击选项卡在数据之间切换时,它似乎重新加载或重建它。如何调整选项卡组件,使其不会每次都破坏数据?

Ili*_*ium 5

替换TabPanel.svelte 中的以下代码块

{#if $selectedPanel === panel}
    <slot></slot>
{/if}
Run Code Online (Sandbox Code Playgroud)

像这样:

<div hidden={$selectedPanel !== panel}>
    <slot></slot>
</div>
Run Code Online (Sandbox Code Playgroud)

这将确保所有当前未处于活动状态的选项卡面板都获得一个hidden属性,使它们对用户不可见,但它们将出现在 DOM 中。

这应该可以防止您的嵌套组件被重新渲染,因为无论何时您在选项卡之间切换,它们都不会被破坏和重新安装。