Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/STRML/react-localstorage
Simple componentized localstorage implementation for Facebook's React.
https://github.com/STRML/react-localstorage
Last synced: about 2 months ago
JSON representation
Simple componentized localstorage implementation for Facebook's React.
- Host: GitHub
- URL: https://github.com/STRML/react-localstorage
- Owner: STRML
- Created: 2014-05-14T00:05:44.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2023-01-05T16:17:12.000Z (almost 2 years ago)
- Last Synced: 2024-10-13T19:34:02.919Z (2 months ago)
- Language: JavaScript
- Size: 1.09 MB
- Stars: 289
- Watchers: 9
- Forks: 20
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
- awesome-react-components-all - react-localstorage - Simple componentized localstorage implementation for Facebook's React. (Uncategorized / Uncategorized)
- awesome-react-components - react-localstorage - Simple componentized localstorage implementation for Facebook's React. (Utilities / Framework bindings / integrations)
- awesome-list - react-localstorage - Simple componentized localstorage implementation for Facebook's React. (Utilities / Framework bindings / integrations)
- awesome-react-components - react-localstorage - Simple componentized localstorage implementation for Facebook's React. (Utilities / Framework bindings / integrations)
- awesome-react-components - react-localstorage - Simple componentized localstorage implementation for Facebook's React. (Utilities / Framework bindings / integrations)
- awesome-react-components - react-localstorage - Simple componentized localstorage implementation for Facebook's React. (Utilities / Framework bindings / integrations)
- fucking-awesome-react-components - react-localstorage - Simple componentized localstorage implementation for Facebook's React. (Utilities / Framework bindings / integrations)
README
React-LocalStorage
==================Simply synchronize a component's state with `localStorage`, when available.
This is an old-style Mixin, which means it's probably compatible with your React application if it's a few years old. If you're a hip young programmer, you might prefer [a hook, instead](https://usehooks.com/useLocalStorage/).
# Install
[![React-LocalStorage](https://nodei.co/npm/react-localstorage.png)](https://npmjs.org/package/react-localstorage)
```sh
npm i react-localstorage --save
```Usage
-----A simple component:
```javascript
const React = require('react');
const LocalStorageMixin = require('react-localstorage');
const reactMixin = require('react-mixin');// This is all you need to do
@reactMixin.decorate(LocalStorageMixin)
class TestComponent extends React.Component {
static displayName = 'TestComponent';state = {counter: 0};
onClick() {
this.setState({counter: this.state.counter + 1});
}render() {
return {this.state.counter};
}
}
```Options
-------The key that state is serialized to under `localStorage` is chosen with the following code:
```javascript
function getLocalStorageKey(component) {
if (component.getLocalStorageKey) return component.getLocalStorageKey();
if (component.props.localStorageKey === false) return false;
if (typeof component.props.localStorageKey === 'function') return component.props.localStorageKey.call(component);
return component.props.localStorageKey || getDisplayName(component) || 'react-localstorage';
}
```If you are synchronizing multiple components with the same `displayName` to localStorage,
you must set a unique `localStorageKey` prop on the component. You may set a function as well.Alternatively, you may define the method `getLocalStorageKey` on the component's prototype.
This gives you the freedom to choose keys depending on the component's props or state.To disable usage of localStorage entirely, pass `false` or a function that evaluates to `false`.
Filtering
---------
If you only want to save parts of state in localStorage, set `stateFilterKeys` to an array of strings corresponding to the state keys you want to save.```javascript
getDefaultProps: function() {
return {
stateFilterKeys: ['one', 'two']
};
}
```
You can do this by setting a `stateFilterKeys` prop or define the method `getStateFilterKeys` on the component's prototype.```javascript
getStateFilterKeys: function() {
return ['one', 'two'];
}
```Server Rendering
----------------`LocalStorageMixin` will call `setState` on `componentDidMount`, so it will not break server rendering
checksums. This is new as of `0.2.0`.Tests
------We use `jest` as the test runner. To run the test, simply `yarn install` all the dependencies and run `yarn test`.