UseArrayStateDemo
guarahooks/use-array-state-demoFreeExample
use-array-state's hook in action.
Live preview
live · rendered by the registry
Rendered by guarahooks on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://guarahooks.com/r/use-array-state-demo.jsonSource
1'use client';23import React, { useState } from 'react';45import { Badge } from '@/components/ui/badge';6import { Button } from '@/components/ui/button';7import {8 Card,9 CardContent,10 CardDescription,11 CardFooter,12 CardHeader,13 CardTitle,14} from '@/components/ui/card';15import { Input } from '@/components/ui/input';1617import { useArrayState } from '@/hooks/guarahooks/use-array-state';1819export default function UseArrayStateDemo() {20 const [inputValue, setInputValue] = useState('');21 const [updateIndex, setUpdateIndex] = useState('');22 const [updateValue, setUpdateValue] = useState('');2324 const {25 array,26 length,27 isEmpty,28 first,29 last,30 push,31 pop,32 shift,33 unshift,34 insert,35 remove,36 update,37 clear,38 reset,39 sort,40 reverse,41 filter,42 } = useArrayState<string>({43 initialValue: ['React', 'TypeScript', 'Next.js'],44 onChange: (newArray) => {45 console.log('Array changed:', newArray);46 },47 });4849 const handleAddItem = () => {50 if (inputValue.trim()) {51 push(inputValue.trim());52 setInputValue('');53 }54 };5556 const handleUpdateItem = () => {57 const index = parseInt(updateIndex);58 if (!isNaN(index) && updateValue.trim()) {59 update(index, updateValue.trim());60 setUpdateIndex('');61 setUpdateValue('');62 }63 };6465 const handleInsertAtStart = () => {66 if (inputValue.trim()) {67 unshift(inputValue.trim());68 setInputValue('');69 }70 };7172 const handleRemoveItem = (index: number) => {73 remove(index);74 };7576 const handleFilterLongItems = () => {77 filter((item) => item.length <= 6);78 };7980 return (81 <Card className="w-full max-w-2xl mx-auto">82 <CardHeader>83 <CardTitle>useArrayState</CardTitle>84 <CardDescription>85 A powerful hook for managing arrays as React state with built-in86 manipulation methods.87 </CardDescription>88 </CardHeader>89 <CardContent className="space-y-6">90 {/* Array Display */}91 <div>92 <h3 className="text-sm font-medium mb-2">Current Array:</h3>93 <div className="flex flex-wrap gap-2 min-h-[40px] p-3 border rounded-md bg-muted/20">94 {array.map((item, index) => (95 <Badge96 key={index}97 variant="secondary"98 className="cursor-pointer hover:bg-destructive hover:text-destructive-foreground"99 onClick={() => handleRemoveItem(index)}100 >101// … truncated
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 | |
| 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 | |
| UseCopyToClipboardDemouse-copy-to-clipboard-demo | guarahooks | Examples | Free | no deps |
