https://github.com/wonism/use-memory-storage
React hooks for memory storage is sharing session storage between multiple tabs.
https://github.com/wonism/use-memory-storage
hooks react reactjs session-storage sessionstorage
Last synced: 10 months ago
JSON representation
React hooks for memory storage is sharing session storage between multiple tabs.
- Host: GitHub
- URL: https://github.com/wonism/use-memory-storage
- Owner: wonism
- License: mit
- Created: 2019-10-03T14:13:08.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-07T10:20:56.000Z (over 3 years ago)
- Last Synced: 2025-07-01T16:09:22.349Z (11 months ago)
- Topics: hooks, react, reactjs, session-storage, sessionstorage
- Language: TypeScript
- Size: 411 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Use Memory Storage
> React hooks for memory storage is sharing session storage between multiple tabs.
> Ideas from the [blog
> post](https://blog.guya.net/2015/06/12/sharing-sessionstorage-between-tabs-for-secure-multi-tab-authentication/)
> written by [@guy-a](https://github.com/guy-a)
[](https://badge.fury.io/js/use-memory-storage)
[](https://travis-ci.org/wonism/use-memory-storage)
## Installation
```sh
$ npm i -S use-memory-storage
```
## Use cases
```tsx
import React, { useState, useEffect, useCallback } from 'react';
import useMemoryStorage from 'use-memory-storage';
const KEY = 'TEST/useMemoryStorage';
const Demo: React.FC = () => {
const [token, setToken] = useState(null);
useMemoryStorage(KEY, token, setToken);
const handleClick = useCallback(() => {
setToken(Date.now().toString());
}, []);
useEffect(() => {
const storedData = sessionStorage.getItem(KEY);
if (storedData != null) {
setToken(storedData);
}
}, []);
useEffect(() => {
if (token != null) {
window.sessionStorage.setItem(KEY, token);
}
}, [token]);
return (
Click button to generate token in session storage!
stored data : {token}
Click
);
}
export default Demo;
```