hook-model
v0.0.1
Published
useModel react hook
Maintainers
Readme
useModel
A flexible React hook for managing state with a proxy-based event system. This hook provides an elegant way to handle state updates and resets with a clean, intuitive API.
Features
- Proxy-based state management
- Individual field updates and resets
- Full state reset capability
- Type-safe state manipulation
- Minimal boilerplate
Installation
npm install hook-model
# or
yarn add hook-modelUsage
import { useModel } from 'hook-model';
function UserForm() {
const initialState = {
name: '',
email: '',
age: 0
};
const [state, event] = useModel(initialState);
// Using individual field handlers
const handleNameChange = (e) => {
event.name.set(e.target.value);
};
// Using direct set method
const handleEmailChange = (e) => {
event.set('email', e.target.value);
};
// Reset single field
const resetAge = () => {
event.age.reset();
};
// Reset all fields
const resetForm = () => {
event.reset();
};
return (
<form>
<input value={state.name} onChange={handleNameChange} />
<input value={state.email} onChange={handleEmailChange} />
<input value={state.age} onChange={(e) => event.age.set(Number(e.target.value))} />
<button type="button" onClick={resetAge}>
Reset Age
</button>
<button type="button" onClick={resetForm}>
Reset Form
</button>
</form>
);
}API
useModel(initialState)
Returns a tuple containing the current state and an event handler object.
Parameters
initialState: Object containing the initial state values
Returns
[state, event]: Tuple containing:state: Current state objectevent: Proxy object with state manipulation methods
Event Handler Methods
event.set(key, value): Set a specific field valueevent.reset([key]): Reset specific field or entire stateevent[field].set(value): Set value for specific fieldevent[field].reset(): Reset specific field to initial value
