https://github.com/iroy2000/redux-cookie
Redux cookie middleware for both client and server ( universal )
https://github.com/iroy2000/redux-cookie
Last synced: 10 months ago
JSON representation
Redux cookie middleware for both client and server ( universal )
- Host: GitHub
- URL: https://github.com/iroy2000/redux-cookie
- Owner: iroy2000
- License: mit
- Created: 2016-07-27T19:00:23.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2017-01-14T02:29:15.000Z (over 9 years ago)
- Last Synced: 2025-07-01T12:22:56.000Z (12 months ago)
- Language: JavaScript
- Size: 14.6 KB
- Stars: 16
- Watchers: 1
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# redux-cookie
Redux cookie middleware for both client and server ( universal )
## Build Status
[](https://travis-ci.org/iroy2000/redux-cookie)
## Note
Since `version 0.5.6`, this library has changed the action signature
**from** `cookieSet, cookieGet and cookieExpire`
**to** `setCookie, getCookie and expireCookie`
But all the functionality is the same as before.
## Prerequiste
Assuming you are using a cookie library, like `js-cookie` or your own cookie library implementation.
Make sure it has `get` and `set` in your cookie library implementation.
## Server Side
```javascript
import {createStore, applyMiddleware} from 'redux';
import Cookies from 'cookies';
import { createCookieMiddleware } from 'redux-cookie';
import {createServer} from 'http';
import reducer from './reducer';
createServer(function(req, res) {
const cookies = new Cookies(req, res);
const store = createStore(
reducer,
applyMiddleware(createCookieMiddleware(cookies))
);
//...
}).listen(3000);
```
## Client Side
```javascript
import Cookies from 'js-cookie';
import { createCookieMiddleware } from 'redux-cookie';
import reducer from './reducer';
const store = createStore(
reducer,
applyMiddleware(createCookieMiddleware(Cookies))
);
```
## Usage
`redux-cookie` exposes `cookieGet`, `cookieSet` and `cookieExpire`
`cookieGet` takes a "cookie name"
`cookieExpire` takes a "cookie name"
`cookieSet` takes a "cookie name", "cookie value" and an optional "options" // options like "expires" or options support by your cookie library
```javascript
import { getCookie, setCookie, expireCookie } from 'redux-cookie';
// !! important >> Remember those are actions, the following just show you what it does
// Please look at the test file to see examples on how to dispatch the action
setCookie('cool', 'very cool', { expires: 365 }) // please check your cookie library for what is supported
getCookie('cool')
expireCookie('cool') // expire cookie now
```
**Note:** `redux-cookie` also expose an action `removeCookie` if your library has `remove` implementation,
if not, it will fall back to `expireCookie`.
`removeCookie` takes a "cookie name" and an optional "options"
```javascript
import { setCookie, removeCookie } from 'redux-cookie';
// !! important >> Remember those are actions, the following just show you what it does
// If you have question about the usage, please take a look at the test file
// Delete a cookie valid to the path of the current page
setCookie('cool', 'very cool', { path: '' }) // if you option has path
// it won't work - fail
removeCookie('cool') // it won't work :(
// it will work - removed
removeCookie('cool', { path: '' })
```
## Configuration
If you want to prefix your action name
```javascript
import Cookies from 'cookies-js';
import { createCookieMiddleware } from 'redux-cookie';
import reducer from './reducer';
const store = createStore(
reducer,
applyMiddleware(createCookieMiddleware(Cookies, '/redux/cookie/'))
);
```
## Known Issues
If you are creating multiple createCookieMiddle, you cannot use prefix or it will introduce a bug https://github.com/iroy2000/redux-cookie/issues/3. At the meantime, we are trying to brainstorm the best way to handle this case - https://github.com/iroy2000/redux-cookie/pull/4