createSelector
Edit this pagecreateSelector has been removed in Solid 2.0. It is replaced by createProjection for mutable derived stores, or createStore(fn) for derived stores.
Replacement: createProjection
createProjection creates a mutable derived store (a projection). The derive function receives a draft that you can mutate to define the projected state. This provides the same optimized selection pattern that createSelector offered, but in a more general and composable form.
import { createSignal } from "solid-js"import { createProjection } from "solid-js/store"
const [selectedId, setSelectedId] = createSignal(0)
// createProjection receives a draft you can mutateconst selected = createProjection((draft) => { // clear the previously selected item for (const key in draft) { draft[key] = false } // mark the currently selected item draft[selectedId()] = true})Migrating selection patterns
// 1.x — createSelectorimport { createSelector } from "solid-js"
const [selectedId, setSelectedId] = createSignal()const isSelected = createSelector(selectedId)
<For each={list()}> {(item) => <li classList={{ active: isSelected(item.id) }}>{item.name}</li>}</For>
// 2.0 — createProjectionimport { createProjection } from "solid-js/store"
const [selectedId, setSelectedId] = createSignal()const selected = createProjection((draft) => { for (const key in draft) { draft[key] = false } draft[selectedId()] = true})
<For each={list()}> {(item) => <li classList={{ active: selected[item.id] }}>{item.name}</li>}</For>Using createStore(fn) for derived stores
For simpler cases where you want to derive store state from signals, you can also use createStore(fn):
// 2.0 — createStore(fn) for derived stateimport { createStore } from "solid-js/store"
const [selectedId, setSelectedId] = createSignal(0)const [state] = createStore(() => ({ selected: selectedId(),}))1.x API reference (removed)
import { createSelector } from "solid-js"
function createSelector<T, U>( source: () => T, fn?: (a: U, b: T) => boolean): (key: U) => booleancreateSelector created a parameterized derived boolean signal selector(key) that indicated whether key was equal to the current value of the source signal. These signals were optimized to notify each subscriber only when their key started or stopped matching the reactive source value (instead of every time source changed), reducing from n updates to 2 updates.