storePath
Creates a path-based store update for code that still uses Solid 1.x setter paths. Prefer draft-mutating store setters in new code.
Import
import { storePath } from "@solidjs/signals";Type signature
interface StorePath { <T>(setter: PathSetter<T>): (state: T) => void; <T, K extends keyof T>( key: Part<T, K>, setter: PathSetter<T[K]> ): (state: T) => void; readonly DELETE: typeof DELETE;}
const storePath: StorePath;Parameters
k1
- Type:
Part<W<T>, K1>
k2
- Type:
Part<W<W<T>[K1]>, K2>
k3
- Type:
Part<W<W<W<T>[K1]>[K2]>, K3>
k4
- Type:
Part<W<W<W<W<T>[K1]>[K2]>[K3]>, K4>
k5
- Type:
Part<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>, K5>
k6
- Type:
Part<W<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>[K5]>, K6>
k7
- Type:
Part<W<W<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>[K5]>[K6]>, K7>
setter
- Type:
PathSetter<W<W<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>[K5]>[K6]>[K7]> | PathSetter<W<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>[K5]>[K6]> | PathSetter<W<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]>[K5]> | PathSetter<W<W<W<W<T>[K1]>[K2]>[K3]>[K4]> | PathSetter<W<W<W<T>[K1]>[K2]>[K3]> | PathSetter<W<W<T>[K1]>[K2]> | PathSetter<W<T>[K1]> | PathSetter<T>
Properties
DELETE
- Type:
typeof DELETE
Examples
const [state, setState] = createStore({ user: { name: "Ada" }, todos: [] });
setState(storePath("user", "name", "Grace"));setState(storePath("todos", (t) => !t.done, "done", true)); // mark all undone as donesetState(storePath("user", "nickname", storePath.DELETE));setState(storePath("user", "name", "Grace"));setState(storePath("todos", (todo) => !todo.done, "done", true));setState(storePath("user", "nickname", storePath.DELETE));Learn more
Related types
ArrayFilterFn
type ArrayFilterFn<T> = (item: T, index: number) => boolean;CustomPartial
type CustomPartial<T> = T extends readonly unknown[] ? "0" extends keyof T ? { [K in Extract<keyof T, `${number}`>]?: T[K] } : { [x: number]: T[number] } : Partial<T>;Part
type Part<T, K extends KeyOf<T> = KeyOf<T>> = | K | ([K] extends [never] ? never : readonly K[]) | ([T] extends [readonly unknown[]] ? ArrayFilterFn<T[number]> | StorePathRange : never);PathSetter
type PathSetter<T> = T | CustomPartial<T> | ((prev: T) => T | CustomPartial<T>) | typeof DELETE;StorePathRange
type StorePathRange = { from?: number; to?: number; by?: number };from
- Type:
number
to
- Type:
number
by
- Type:
number