@minoris/react-serialize
Version:
Provides an idiomatic way to serialize data for rehydration in a universal react application.
49 lines (34 loc) • 1.48 kB
Markdown
# `@minoris/react-serialize`
[](https://travis-ci.org/Minoris/quilt)
[](LICENSE.md) [](https://badge.fury.io/js/%40minoris%2Freact-serialize) 
Provides an idiomatic way to serialize data for rehydration in a universal react application.
## Installation
```bash
$ yarn add @minoris/react-serialize
```
## Usage
On the server, the `<Serializer />` component will serialize whatever you pass as it's `data` prop.
```javascript
// in your server renderer
import {Serializer} from '@minoris/react-serialize';
...
const apolloState = getDatafromTree(appMarkup)
const markup = react.renderToString(
<React.Fragment>
{appMarkup}
<Serializer id="apollo-data" data={apolloState}>
</React.Fragment>
);
```
Then on the client, you can use `getSerialized` to fetch that data out of the DOM and initialize whatever you need.
```javascript
// when you are rehydrating on the client
import {getSerialized} from '@minoris/react-serialize';
import ApolloClient from 'apollo-client';
...
const {data: initialApolloData} = getSerialized('apollo-data');
const client = new ApolloClient({
...myConfig,
cache: cache.restore(initialApolloData),
});
```