react Redux
react Redux
by pj_js15
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/redux/3.2.1/redux.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.7/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.7/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-redux/4.3.0/react-redux.js"></script>
<div id='container'></div>
Babel + JSX
let reducer = (state=0, action) => {
switch (action.type) {
case 'INCREASE': return state+1
case 'DECREASE': return state-1
case 'INCREASE2': return state+2
default: return state
}
}
let store = Redux.createStore(reducer)
class RootComponent extends React.Component {
render() {
let {number, increase, decrease, increase2} = this.props
return <div>
<div>{number}</div>
<button onClick={e=>increase()}>+</button>
<button onClick={e=>decrease()}> - </button>
<button onClick={e=>increase2()}>+2</button>
</div>
}
}
let mapStateToProps = state => ({
number: state
})
let mapDispatchToProps = dispatch => ({
increase: () => dispatch({type: 'INCREASE'}),
decrease: () => dispatch({type: 'DECREASE'}),
increase2: () => dispatch({type: 'INCREASE2'})
})
const ConnectedRootComponent = ReactRedux.connect(
mapStateToProps, mapDispatchToProps
)(RootComponent)
ReactDOM.render(
<ReactRedux.Provider store={store}>
<ConnectedRootComponent />
</ReactRedux.Provider>,
document.getElementById('container')
)