-
Notifications
You must be signed in to change notification settings - Fork 0
/
barracks-react.js
42 lines (36 loc) · 1.01 KB
/
barracks-react.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
const React = require('react')
const barracks = require('barracks')
function generateStore (component, models) {
const BarracksReact = React.createClass({
componentWillMount: function () {
if (!Array.isArray(models)) {
models = [models]
}
this.store = barracks()
this.store.use({
onError: (err) => {
this.setState({err})
},
onStateChange: (state, data, prev, caller) => {
this.setState({data: state})
}
})
const data = {}
models.forEach((model) => {
this.store.model(model)
data[model.namespace] = model.state
})
const createSend = this.store.start({subscriptions: false})
const send = createSend('reactDispatcher', true)
this.setState({data, send})
},
componentWillUnmount: function () {
this.store.stop()
},
render: function () {
return React.createElement(component, this.state)
}
})
return BarracksReact
}
module.exports = generateStore