如何修复 Svelte 中的“sessionStorage 未定义”?

Cel*_*ues 2 svelte sapper

我是 Svelte 的新手,我试图将一些信息设置到 sessionStorage 中,但它抛出“sessionStorage 未定义”。我意识到我收到此错误是因为它在服务器端运行。

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

在网上搜索我发现在这种情况下我必须在onMount函数中使用sessionStorage。这是正确的方法吗?

我怎样才能避免我的代码变得有点乱?

小智 8

嘿,你需要使用 onMount

import { onMount } from 'svelte';

onMount(() => {
    sessionStorage.setItem('myWork', 'Developer');
});
Run Code Online (Sandbox Code Playgroud)


exs*_*ide 7

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

if (window && window.sessionStorage) {
    // do your stuff with sessionStorage
}
Run Code Online (Sandbox Code Playgroud)

或者

if (typeof window !== 'undefined') {
    // do your stuff with sessionStorage
}
Run Code Online (Sandbox Code Playgroud)