SolidJSS
SolidJSโ€ข17mo agoโ€ข
6 replies
jrainearwills

Client Only - Local Storage

I created a global store that's backed by window.localstorage. I don't think that I can use clientOnly because the module doesn't export an Element. What do I do?

import { createEffect } from "solid-js";
import { createStore } from "solid-js/store";

interface AppState {
    accessToken?: string;
    itemId?: string;
}

const pair = window.localStorage.getItem("item");
const [itemId, accessToken] = pair?.split("|") || [];

export const [appState, setAppState] = createStore<AppState>({
    itemId,
    accessToken
})

createEffect(() => {
    if (appState.itemId && appState.accessToken) {
        const value = `${appState.itemId}|${appState.accessToken}`;
        window.localStorage.setItem("item", value);
    } else {
        window.localStorage.removeItem("item");
    }
})
Was this page helpful?