SolidJSS
SolidJS•3y ago•
11 replies
DaOfficialWizardđź§™

createStore causing warning

I am using createStore for a lot of my app, to reduce prop drilling and make inter-component communication a lot easier. I will preface, my app works exactly as intended. No bugs or issues that i can see (currently) - however i get this warning due to my createStore structure.
computations created outside a `createRoot` or `render` will never be disposed
createComputation @ dev.js:748

This is an example store:
src/store/mdns/index.ts
import { createMemo } from 'solid-js'
import { createStore, produce } from 'solid-js/store'

export enum MdnsStatus {
    ACTIVE = 'ACTIVE',
    DISABLED = 'DISABLED',
    LOADING = 'LOADING',
    FAILED = 'FAILED',
}

interface IMdnsResponse {
    ips: string[]
    urls: string[]
}

interface IMdnsStore {
    mdnsStatus: MdnsStatus
    mdnsData: IMdnsResponse
}

export const defaultState: IMdnsStore = {
    mdnsStatus: MdnsStatus.DISABLED,
    mdnsData: {
        ips: [],
        urls: [],
    },
}

const [state, setState] = createStore<IMdnsStore>(defaultState)

export const setMdnsStatus = (status: MdnsStatus) => {
    setState(
        produce((s) => {
            s.mdnsStatus = status
        }),
    )
}

export const setMdnsData = (data: IMdnsResponse) => {
    setState(
        produce((s) => {
            s.mdnsData = data
        }),
    )
}

export const mdnsState = createMemo(() => state)

src/store/mdns/selectors.ts
import { createMemo } from 'solid-js'
import { mdnsState } from './mdns'

export const mdnsStatus = createMemo(() => mdnsState().mdnsStatus)
export const mdnsData = createMemo(() => mdnsState().mdnsData)
Was this page helpful?