fazor
description
a redux like state engine for react using 'useReducer' hook and constate
installation
npm i @fazor/fazor -S
usage
import React from 'react'
import ReactDOM from 'react-dom'
import { create as createFazor } from '@fazor/fazor'
const myComponentInitialState = {
i: 0,
messages: [
'fazors to stun',
'faze transitions'
]
}
const [ createAction, setInitialFaze ] = createFazor()
createAction({
type: 'myAction',
handler: (i, messages) => ({ myMessage: messages[i] }),
reducer: ({ i, ...state }, { myMessage }) => ({
...state,
i: i === 0 ? 1 : 0,
myMessage
})
})
const getFaze = setInitialFaze({ ...myComponentInitialState })
const MyComponent = ({ useFaze, createAction }) => {
const [ { i, messages }, { myAction } ] = getFaze()
return (
<button onClick={ () => myAction(i, messages) }>
dispatch my action
</button>
)
}
const App = () => {
return (
<getFaze.Provider>
<MyComponent />
</getFaze.Provider>
)
}
ReactDOM.render(
<App />,
document.getElementById('root')
)