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)
每次我点击选项卡在数据之间切换时,它似乎重新加载或重建它。如何调整选项卡组件,使其不会每次都破坏数据?
替换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 中。
这应该可以防止您的嵌套组件被重新渲染,因为无论何时您在选项卡之间切换,它们都不会被破坏和重新安装。