UNPKG

2.27 kBMarkdownView Raw
1# Revue
2
3[![NPM version](https://img.shields.io/npm/v/revue.svg?style=flat-square)](https://www.npmjs.com/package/revue)
4[![NPM download](https://img.shields.io/npm/dm/revue.svg?style=flat-square)](https://www.npmjs.com/package/revue)
5[![Build Status](https://img.shields.io/circleci/project/egoist/revue/master.svg?style=flat-square)](https://circleci.com/gh/egoist/revue/tree/master)
6
7**New:** [Time to use Redux-devtools in non-React apps!](https://github.com/egoist/redux-devtools-script)
8
9![](https://ooo.0o0.ooo/2015/12/01/565e513fc6d4a.png)
10
11## Usage
12
13Obviously it works with Redux, install via NPM: `npm i -D redux revue`
14
15You can also hot-link the CDN version: https://npmcdn.com/revue, `Revue` is exposed to `window` object.
16
17```javascript
18// App.js
19import Revue from 'revue'
20import store from './store'
21Vue.use(Revue, {
22 store
23})
24
25// store.js
26// just put some reducers in `./reducers` like
27// what you do in pure Redux
28// and combine them in `./reducers/index.js`
29import { createStore } from 'redux'
30import reducer from './reducers/index'
31export default createStore(reducer)
32
33// component.js
34// some component using Revue
35new Vue({
36 el: '#app',
37 data () {
38 return {
39 counter: this.$revue.getState().counter
40 }
41 },
42 ready () {
43 // subscribe state changes
44 this.$subscribe('counter')
45 // if your name the 'counter' to 'temp_counter' in data()
46 // you can use this.$subscribe('counter as temp_counter')
47 },
48 methods: {
49 handleClickCounter () {
50 // dispatch events
51 this.$revue.dispatch({type: 'INCREMENT'})
52 }
53 }
54})
55```
56
57[**More detailed usages**](/src)
58
59## Hot-reload reducers
60
61Just change your `store.js` like this:
62
63Before:
64
65```javascript
66import { createStore } from 'redux'
67import rootReducer from './reducers'
68
69export default createStore(rootReducer)
70```
71
72After:
73
74```javascript
75import { createStore } from 'redux'
76import rootReducer from './reducers'
77
78function configureStore() {
79 const store = createStore(rootReducer)
80 if (module.hot) {
81 module.hot.accept('./reducers', () => {
82 const nextRootReducer = require('./reducers').default
83 store.replaceReducer(nextRootReducer)
84 })
85 }
86 return store
87}
88
89export default configureStore()
90```
91
92## License
93
94MIT © [EGOIST](https://github.com/egoist)