useSessionStorage
Get, set and/or remove sessionStorage.
API
function useSessionStorage<T>(
key: string,
options?: {
defaultValue?: T;
polling?: boolean;
pollingInterval?: number;
compare?: (x: any, y: any) => boolean;
validate?: (value: any) => boolean;
serialize?: (value: T) => string;
deserialize?: (raw: string) => T;
}
): [
value: T | undefined,
setSessionStorage: (
newValue: T | undefined | ((prevValue: T | undefined) => T | undefined)
) => void
];
Params:
key:sessionStoragekey.options: Options object.options.defaultValue: Default value.options.polling: Pollingly update value. Default isfalse.options.pollingInterval: Polling interval time, in milliseconds. Default is100.options.compare: The comparison function in polling. Use deep comparison by default.options.validate: Validate the value got fromsessionStoragewhich deserialized bydeserializefunction. If this function returnfalse, thedefaultValuewill be used.options.serialize: Serialization function. Default isJSON.stringify.options.deserialize: Deserialization function. Default isJSON.parse.
Results:
value: Parsed by the deserialization function.setSessionStorage: SetsessionStorage. If thenewValueisundefined, return thedefaultValue.
Example
The value is: default value
import React from "react";
import { useSessionStorage } from "@lilib/hooks";
function Example() {
const [value, setSessionStorage] = useSessionStorage("key", {
polling: true,
defaultValue: "default value",
});
return (
<>
<div>
<button onClick={() => setSessionStorage(Math.random().toString())}>
Set random value
</button>{" "}
<button onClick={() => setSessionStorage(undefined)}>Remove</button>
</div>
<div>The value is: {value}</div>
</>
);
}
export default Example;