如何在 Svelte 中修复 "sessionStorage is not defined"?

How can I fix "sessionStorage is not defined" in Svelte?

我是 Svelte 的新手,我正在尝试将一些信息设置到 sessionStorage 中,但它正在抛出 "sessionStorage is not defined"。 我意识到我收到了这个错误,因为它在服务器端 运行。

我在 /src/components/nav.svelte 创建了一个使用 /src/domain/auth/service.js 的组件,但出现了错误在最后一个。

在网上搜索我发现在这种情况下我必须在 onMount 函数中使用 sessionStorage 。这样对吗?

如何避免我的代码变得有点混乱?

您可以尝试检查您是否确实处于浏览器环境中,例如像

if (window && window.sessionStorage) {
    // do your stuff with sessionStorage
}

if (typeof window !== 'undefined') {
    // do your stuff with sessionStorage
}

嘿,你需要使用 onMount

import { onMount } from 'svelte';

onMount(() => {
    sessionStorage.setItem('myWork', 'Developer');
});