# Basic SolidJS Integration Create a simple useObservable hook: ```ts import type { Observable, ObservableComputed, ObservablePrimitive } from '@legendapp/state'; import type { Accessor } from 'solid-js'; import { createMemo, from } from 'solid-js'; import { createStore } from 'solid-js'; export function useObservable( obs: Observable | ObservableComputed | ObservablePrimitive, ): Accessor { const signaled = from((set) => { const val = obs.get(); set(val as any); const dispose = obs.onChange(set); return () => dispose(); }); const memo = createMemo(() => { return signaled()!; }); return memo; } // For objects or arrays export function useObservableStore(obs: Observable): readonly T { const [store, setStore] = createStore(obs.peek()); const signaled = from((set) => { const val = obs.get(); set(val as any); const dispose = obs.onChange(set); return () => dispose(); }); createEffect(() => { setStore(reconcile(signaled())); }); return store; } ``` Use it in your component: ```tsx import { createSignal, For, Show } from 'solid-js'; import { store } from './store'; // <- your tabular-state store instance import { useObservable } from './useObservable'; function MyComponent() { const [rowsObs, fn, meta] = store.queryRows('users', { query: { age: { $gte: 18, }, }, }); const rows = useObservableStore(rowsObs); const totalRowsAvailable = useObservable(meta.totalRowsAvailable); return (
{(user) => (
{user.firstName} {user.lastName}
)}
{totalRowsAvailable()} rows available
); } ```