-
Notifications
You must be signed in to change notification settings - Fork 1
/
example.js
78 lines (61 loc) · 1.68 KB
/
example.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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
'use strict';
const React = require('react');
const ReactDOM = require('react-dom');
const jsdom = require('jsdom');
const Provider = require('./redux-react.js').createProvider(React);
const Connect = require('./redux-react.js').createConnect(React);
const redux = require('./redux.js');
const reducer = (state, action) => {
if (action.type === 'one') return 'one';
return 'none';
};
const store = redux.createStore(reducer,'start');
const HelloWorld = React.createClass({
displayName: 'HelloWorld',
render: function () {
return (
React.createElement('div',null)
);
}
});
const HelloWorldContainer = React.createClass({
displayName: 'HelloWorldContainer',
render: function () {
return (
React.createElement(HelloWorld,null)
);
}
});
const mapStateToProps = state => {
return Object.keys(state).reduce((acc,elm) => {
acc[elm] = state[elm];
return acc;
},{});
};
const HelloWorldReduxContainer = Connect(mapStateToProps)(HelloWorldContainer);
const App = React.createClass({
displayName: 'App',
render: function () {
return (
React.createElement(Provider, {
store: store
}, function () {
return React.createElement(HelloWorldReduxContainer, null);
})
);
}
});
jsdom.env('', {
virtualConsole: jsdom.createVirtualConsole().sendTo(console),
scripts: ['http://code.jquery.com/jquery-2.1.1.js'],
done: function (err, window) {
global.window = window;
ReactDOM.render(React.createElement(App, null), window.document.body);
process.nextTick(function () {
store.dispatch({type:'one'});
console.log(store.getState());
process.nextTick(function () {
});
})
}
});