Docs
useObjectState
Manage complex state objects with useObjectState.
Loading...
Installation
pnpm dlx shadcn@latest add https://usekit.kiron.dev/k/use-object-state
Usage
"use client"
import { useObjectState } from "@/hooks/use-object-state"
interface TeamStats {
team: string
wins: number
losses: number
championships: number
}
const initialState: TeamStats = {
team: "Utah Jazz",
wins: 2138,
losses: 1789,
championships: 0,
}
export default function UseObjectStateDemo() {
const [stats, setStats] = useObjectState<TeamStats>(initialState)
const addWin = () => {
setStats((s) => ({
wins: s.wins + 1,
}))
}
const addLoss = () => {
setStats((s) => ({
losses: s.losses + 1,
}))
}
const reset = () => {
setStats(initialState)
}
return (
<section>
<h1>Team Statistics</h1>
<div>
<button onClick={addWin}>Add Win</button>
<button onClick={addLoss}>Add Loss</button>
<button onClick={reset}>Reset</button>
</div>
<table>
<thead>
<tr>
{(Object.keys(stats) as Array<keyof TeamStats>).map((key) => (
<th key={key}>{key}</th>
))}
</tr>
</thead>
<tbody>
<tr>
{(Object.keys(stats) as Array<keyof TeamStats>).map((key) => (
<td key={key}>{stats[key]}</td>
))}
</tr>
</tbody>
</table>
</section>
)
}
API Reference
Parameters
Name | Type | Description | Default Value | Optional |
---|---|---|---|---|
initialValue | object | The initial state value. | {} | Yes |
Return Values
Index | Type | Description |
---|---|---|
0 | object | The current state object. |
1 | Function | A function to update the state object. |