useDelValuesCallback
The useDelValuesCallback
hook returns a callback that can be used to remove all of the keyed value data in a Store
.
useDelValuesCallback(
storeOrStoreId?: StoreOrStoreId,
then?: (store: Store) => void,
thenDeps?: DependencyList,
): Callback
Type | Description | |
---|---|---|
storeOrStoreId? | StoreOrStoreId | The |
then? | (store: Store) => void | A function which is called after the deletion, with a reference to the |
thenDeps? | DependencyList | An optional array of dependencies for the |
returns | Callback | A callback for subsequent use. |
This hook is useful, for example, when creating an event handler that will delete data in a Store
.
For convenience, you can optionally provide a then
function (with its own set of dependencies) which will be called just after the Store
has been updated. This is a useful place to call the addCheckpoint
method, for example, if you wish to add the deletion to your application's undo stack.
The Store
to which the callback will make the deletion (indicated by the hook's storeOrStoreId
parameter) is always automatically used as a hook dependency for the callback.
Example
This example uses the useDelValuesCallback
hook to create an event handler which deletes from the Store
when the span
element is clicked.
import {useDelValuesCallback, useValues} from 'tinybase/ui-react';
import React from 'react';
import {createRoot} from 'react-dom/client';
import {createStore} from 'tinybase';
const store = createStore().setValues({open: true});
const App = () => {
const handleClick = useDelValuesCallback(store, () =>
console.log('Deleted'),
);
return (
<span id="span" onClick={handleClick}>
{JSON.stringify(useValues(store))}
</span>
);
};
const app = document.createElement('div');
createRoot(app).render(<App />);
const span = app.querySelector('span');
console.log(span.innerHTML);
// -> '{"open":true}'
// User clicks the <span> element:
// -> span MouseEvent('click', {bubbles: true})
// -> 'Deleted'
console.log(span.innerHTML);
// -> '{}'
Since
v3.0.0