@abasb75/react-state-manager
v0.0.0-test1
Published
a react powerfull state manager
Readme
@abasb75/react-state-manager
@abasb75/react-state-manager is a great and best state manager tools for your javascript web applications.
- sync data between opened browser tabs when updating state.
- save data on
localstorage - great type hint for
stateor definedaction
installation
npm i @abasb75/state-manager @abasb75/react-state-manager --saveQuick Start:
- Create
initial valuefor passing to store's object:
interface StateType {
darkMode:boolean;
counter:number;
notes:{
text:string;
date:number;
}[];
}
const initialState:StateType = {
darkMode:false,
counter:0,
notes:[],
}
- Define your
actions:
const actions = {
toggleDarkMode:(state:StateType)=>{
return {
...state,
darkMode:!state.darkMode,
};
},
counter:{
increment:(state:StateType)=>{
return {
...state,
counter:state.counter+1,
}
},
decrement:(state:StateType)=>{
return {
...state,
counter:state.counter-1,
}
},
},
notes:{
add:(state:StateType,text:string):StateType=>{
console.log('add worked!')
return {
...state,
notes:[
...state.notes,
{
text:text,
date:Date.now(),
}
]
}
},
delete:(state:StateType,id:number):StateType=>{
return {
...state,
notes:state.notes.filter(n=>n.date!==id),
}
},
}
}
- Create your store:
import { createStore } from "@abasb75/state-manager";
...
const initialState:StateType = {
...
}
const actions = {
...
}
const store = createStore({
initialState,
actions,
storgable:true, // if storagble sets true, states saved on localstorage
storageKey:'mystorage',
});
export default store;
- create hook via store;
import prepareReactHooks from "@abasb75/react-state-manager";
....
const {
useStateSelector,
useAction,
} = prepareReactHooks(store);
export {
useStateSelector,
useAction,
};
- get state data with
useStateSelectorhook:
import { useStateSelector } from "./state";
...
const darkMode = useStateSelector(state=>state.darkMode); //return darkMode value
- update state properties value with
useStateDispatcherhook:
import { useStateSelector } from "./state";
....
const dispatch = useStateDispatcher();
dispatch({
counter:0;
}).then(state=>{
console.log(state.counter);
});
- update state value with defiened
actions:
import { useAction } from "./state";
...
const toggleDarkMode = useAction(actions=>actions.toggleDarkMode);
...
onClick={()=>toggleDarkMode()}
Examples:
Simple Note App
