1.0.2 • Published 7 months ago
@n0n3br/react-use-indexeddb v1.0.2
@n0n3br/react-use-indexeddb
A React hook for easy IndexedDB integration. This hook simplifies working with IndexedDB in React applications by providing a clean and intuitive API.
Installation
npm install @n0n3br/react-use-indexeddbUsage
import { useIndexedDB } from '@n0n3br/react-use-indexeddb';
interface Todo {
id: string;
title: string;
completed: boolean;
}
function TodoList() {
const {
add,
get,
getAll,
put,
remove,
clear,
error,
isReady,
data
} = useIndexedDB<Todo>({
dbName: 'TodoDB',
version: 1,
storeName: 'todos'
});
// Add a todo
const handleAdd = async (todo: Todo) => {
await add(todo);
};
// Get a specific todo
const handleGet = async (id: string) => {
const todo = await get(id);
};
// Get all todos
const handleGetAll = async () => {
const todos = await getAll();
};
// Update a todo
const handleUpdate = async (todo: Todo) => {
await put(todo);
};
// Remove a todo
const handleRemove = async (id: string) => {
await remove(id);
};
// Clear all todos
const handleClear = async () => {
await clear();
};
if (!isReady) {
return <div>Loading...</div>;
}
if (error) {
return <div>Error: {error.message}</div>;
}
return (
<div>
{data.map(todo => (
<div key={todo.id}>{todo.title}</div>
))}
</div>
);
}API
Configuration
The hook accepts a configuration object with the following properties:
dbName(string): The name of the IndexedDB databaseversion(number): The version of the databasestoreName(string): The name of the object store
Return Value
The hook returns an object with the following properties:
add(item: T): Adds a new item to the storeget(id: string | number): Retrieves an item by IDgetAll(): Retrieves all items from the storeput(item: T): Updates an existing item or adds it if it doesn't existremove(id: string | number): Removes an item by IDclear(): Removes all items from the storeerror: Any error that occurred during database operationsisReady: Whether the database is ready for operationsdata: Array of all items in the store
Types
Items must have an id property of type string or number:
interface Item {
id: string | number;
// ... other properties
}License
MIT © Rogério Amorim