@amoutonbrady/etat
v0.0.2
Published
The tiniest global store possible for Solid
Downloads
7
Readme
Etat
Etat means "state" in french
Experimental global store for Solid focused on size and extensibility. This is essentially a global and safe way to have Solid's stores via Context API. If you want a more thorough solution, check out solid-pebble.
Installation
$ npm install @amoutonbrady/etat
$ pnpm install @amoutonbrady/etat
$ yarn install @amoutonbrady/etatGetting started
Add the global
EtatProvider// index.tsx import { render } from 'solid-js/web' import { EtatProvider } from '@amoutonbrady/etat'; import { App } from './app'; render( () => ( <EtatProvider> <App /> </EtatProvider> ), document.getElementById('root'), );Define your stores globally
// store.tsx import { createEtat } from '@amoutonbrady/etat`; export const useAuth = createEtat('auth', { token: '', get isAuthenticated() { return this.token.length > 0; }, });Use them as you please accross the whole app
// login.tsx import { useAuth } from './store.tsx'; export function Login() { const [_, setAuth] = useAuth(); function login() { return setAuth('token', 'abcde'); } return <button type="button" onClick={login}>Login!</button> } // app.tsx import { Show } from 'solid-js'; import { Login } from './login.tsx'; import { useAuth } from './store.tsx'; export function App() { const [auth] = useAuth(); return ( <Show when={!auth.isAuthenticated} fallback={<p>Your are logged in with the token {auth.token}</p>} > <Login /> </Show> ); }
API
createEtat<T>(id: string, initialValue: T): () => [Store<T>, StoreSetterFunction<T>]id: This is a unique name that's being used to store the store value.initialValue: This is the initial value of the store. It should ba an object. This will become a parameter of acreateStorefunction.
EtatProvider: this is the global provider. Without this, the stores won't work. I didn't add any check for this.
