Skip to content

npm-solid-js

This is the binding for the Solid view framework. The reason to use these bindings is the Reatom ecosystem. We have a lot of packages and helpers to handle basic UI logic, including network caching, data persistence, and complex flow description.

Installation

Terminal window
npm i @reatom/npm-solid-js

Also, you need to be installed @reatom/core or @reatom/framework and solid-js.

Read the core docs first for production usage.

Usage

Try it now: https://stackblitz.com/edit/reatomnpm-solid-js?file=src%2FApp.tsx

Setup reatomContext

The first time, you need to add the Reatom provider to the root of your application.

import { createCtx, connectLogger } from '@reatom/framework'
import { reatomContext } from '@reatom/npm-solid-js'
const ctx = createCtx()
connectLogger(ctx)
render(
() => (
<reatomContext.Provider value={ctx}>
<App />
</reatomContext.Provider>
),
document.getElementById('root')!,
)

useAtom hook

Now you will be able to use Reatom hooks.

import { atom } from '@reatom/framework'
import { useAtom } from '@reatom/npm-solid-js'
const countAtom = atom(0, 'countAtom')
const App: Component = () => {
const [count, setCount] = useAtom(countAtom)
return (
<div>
Count value is
<button onClick={() => setCount((c) => c + 1)}>{count()}</button>
</div>
)
}

useCtx hook

If you need to get the ctx from the context, you could use the shortcut hook useCtx. With ctx in the component body, you can manipulate subscriptions more flexibly with Solid’s onMount, onCleanup, and so on.

Examples

Dynamic atom creation

This example shoes how to use atomization to improve editable fields performance, persists it to localStorage.

https://stackblitz.com/edit/reatomnpm-solid-js-mssqxj?file=src/model.ts,src/App.tsx