UseSessionStorageDemo
guarahooks/use-session-storage-demoFreeExample
use-session-storage's hook in action.
Install it
npx shadcn@latest add https://guarahooks.com/r/use-session-storage-demo.jsonSource
1'use client';23import React, { useState } from 'react';45import { Label } from '@radix-ui/react-label';67import { Button } from '@/components/ui/button';8import {9 Card,10 CardContent,11 CardDescription,12 CardHeader,13 CardTitle,14} from '@/components/ui/card';15import { Input } from '@/components/ui/input';1617import useSessionStorage from '@/hooks/guarahooks/use-session-storage';1819// Custom serializer/deserializer for an object20const userSerializer = (user: { name: string; age: number }) =>21 JSON.stringify(user);22const userDeserializer = (str: string) => {23 try {24 return JSON.parse(str) as { name: string; age: number };25 } catch {26 return { name: '', age: 0 };27 }28};2930export default function UseSessionStorageDemo() {31 // Object example with custom serializer/deserializer32 const [user, setUser] = useSessionStorage<{ name: string; age: number }>(33 'demo-user',34 { name: '', age: 0 },35 { serialize: userSerializer, deserialize: userDeserializer },36 );3738 const [ageInput, setAgeInput] = useState('');3940 return (41 <Card className="relative max-w-sm w-full">42 <CardHeader>43 <CardTitle>useSessionStorage</CardTitle>44 <CardDescription>45 This component uses the <code>useSessionStorage</code> hook to manage46 a session storage item.47 </CardDescription>48 </CardHeader>49 <CardContent className="space-y-4">50 <div className="flex flex-col gap-2">51 <Label>User (object):</Label>52 <Input53 type="text"54 value={user.name}55 onChange={(e) => setUser({ ...user, name: e.target.value })}56 placeholder="User name..."57 />58 <Input59 type="number"60 value={ageInput}61 onChange={(e) => setAgeInput(e.target.value)}62 placeholder="User age..."63 />64 </div>65 <div className="flex gap-2">66 <Button67 onClick={() => {68 const age = parseInt(ageInput, 10);69 if (!isNaN(age)) setUser({ ...user, age });70 }}71 size="sm"72 >73 Set Age74 </Button>75 <Button onClick={() => setUser({ name: '', age: 0 })} size="sm">76 Clear User77 </Button>78 </div>79 <pre className="text-sm text-muted-foreground bg-accent w-fit px-1 py-0.5 rounded-xs">80 {JSON.stringify(user)}81 </pre>82 </CardContent>83 </Card>84 );85}
What it pulls in
Other registry items
Files it writes
More from guarahooks
All 100 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| UseAbortControllerDemouse-abort-controller-demo | guarahooks | Examples | Free | no deps | |
| UseArrayStateDemouse-array-state-demo | guarahooks | Examples | Free | no deps | |
| UseAxiosDemouse-axios-demo | guarahooks | Examples | Free | no deps | |
| UseBatteryStatusDemouse-battery-status-demo | guarahooks | Examples | Free | no deps | |
| UseBetterAuthDemouse-better-auth-demo | guarahooks | Examples | Free | no deps | |
| UseClickOutsideDemouse-click-outside-demo | guarahooks | Examples | Free | no deps | |
| UseConfirmDemouse-confirm-demo | guarahooks | Examples | Free | no deps | |
| UseCookieDemouse-cookie-demo | guarahooks | Examples | Free | no deps |
