like this
const [status,actions] = useImmerMethods(initStatus,(status)=> ({
doSomething:(num)=>{
status.count+=num;
}
}));
actions.doSomething(123);
example package
import { create } from 'zustand'
const useBearStore = create((set) => ({
bears: 0,
increasePopulation: () => set((state) => ({ bears: state.bears + 1 })),
removeAllBears: () => set({ bears: 0 }),
}))
import useMethods from 'use-methods';
function Counter() {
const [
{ count }, // <- latest state
{ reset, increment, decrement }, // <- callbacks for modifying state
] = useMethods(methods, initialState);
return (
<>
Count: {count}
<button onClick={reset}>Reset</button>
<button onClick={increment}>+</button>
<button onClick={decrement}>-</button>
</>
);
}
const initialState = { count: 0 };
const methods = state => ({
reset() {
return initialState;
},
increment() {
state.count++;
},
decrement() {
state.count--;
},
});
like this
example package