Store
CREATE STORE
Use the STORE-SETUP as a TEMPLATE to create a STORE instance and export the STORE instance
stores/myStore.js
import { createStore } from "@priolo/jon"
const mySetup = {
// this will be cloned during the creation of the STORE
state: {
value: ""
},
getters: {
getUppercase: (_, {state}) => state.value.toUpperCase()
},
mutator: {
setValue: value => ({value})
}
}
const store = createStore(mySetup)
export default store
REACT-COMPONENTS
In the VIEW, calling useStore
,
the COMPONENT (VIEW) listens for changes to the STATE.
So when the STATE is changed, the COMPONENTS using that STORE are also updated.
App.jsx
import { useStore } from "@priolo/jon"
import myStore from "stores/myStore"
export default function App() {
const state = useStore(myStore)
const { setValue, getUppercase } = myStore
return (<div>
<h1>{state.value}</h1><h2>{getUppercase()}</h2>
<input
value={state.value}
onChange={(e)=>setValue(e.target.value)}
/>
</div>)
}
So the mechanism is simple:
- The store maintains the state
- If it is modified it ONLY updates the React components that have registered