Как сохранить состояние компонента с помощью Svelte?
Я пытаюсь сохранить состояние «открыто/закрыто» компонента «Панель». Я использую компонент Accordion из библиотеки SMUI.
Однако при возвращении на страницу с компонентом он продолжает получать значение по умолчанию.
В настоящее время я использую реактивные значения, предложенные SvelteKit . Где я ошибаюсь?
<script lang="ts">
let open: boolean = false;
$: openPanel = open;
</script>
<Panel bind:open={openPanel}>
<Header>
<IconButton slot="icon" toggle pressed={openPanel}>
<Icon class="material-icons" on>expand_less</Icon>
<Icon class="material-icons">expand_more</Icon>
</IconButton>
</Header>
...
</Panel>
1 ответ
По умолчанию состояние нигде не сохраняется, поэтому, если вы не позаботитесь об этом самостоятельно, оно исчезнет.
Я обычно использую магазин для упаковкиsessionStorage
для менее важного/постоянного состояния, такого как, например, открытое/закрытое состояние этого вопроса. SvelteKit также имеет функцию «снимков» , которая позволяет сохранять состояние для записи истории, хотя это восстанавливает состояние только при обратной навигации или перезагрузке браузера.
Для долговременной конфигурации, например темы страницы, я бы использовалlocalStorage
или сохраните его в БД на сервере.