<script>
var store = Redux.createStore(counter)
var valueEl = document.getElementById('value')
function render() {
valueEl.innerHTML = store.getState().toString()
}
render()
store.subscribe(render)
</script>
function counter(state, action) {
if (typeof state === 'undefined') {
return 0
}
switch (action.type) {
case 'INCREMENT':
return state + 1
case 'DECREMENT':
return state - 1
default:
return state
}
}
import React from 'react'
import ReactDOM from 'react-dom'
import { createStore } from 'redux'
import Counter from './components/Counter'
import counter from './reducers'
const store = createStore(counter)
const rootEl = document.getElementById('root')
function render() {
ReactDOM.render(
<Counter
value={store.getState()}
onIncrement={() => store.dispatch({ type: 'INCREMENT' })}
onDecrement={() => store.dispatch({ type: 'DECREMENT' })}
/>,
rootEl
)
}
render()
store.subscribe(render)
export default function counter(state = 0, action) {
switch (action.type) {
case 'INCREMENT':
return state + 1
case 'DECREMENT':
return state - 1
default:
return state
}
}
var express = require('express');
var path = require('path');
var config = require('../webpack.config.js');
var webpack = require('webpack');
var webpackDevMiddleware = require('webpack-dev-middleware');
var webpackHotMiddleware = require('webpack-hot-middleware');
var app = express();
var compiler = webpack(config);
app.use(webpackDevMiddleware(compiler, {noInfo: true, publicPath: config.output.publicPath}));
app.use(webpackHotMiddleware(compiler));
app.use(express.static('./dist'));
app.use('/', function (req, res) {
res.sendFile(path.resolve('client/index.html'));
});
var port = 3000;
app.listen(port, function(error) {
if (error) throw error;
console.log("Express server listening on port", port);
});
import {applyMiddleware,compose,createStore} from "redux"
import reducer from './reducer'
import logger from 'redux-logger'
import thunk from 'redux-thunk'
let initialState = {
visbility:'SHOW_ALL',
todos:[{
id:0,
completed: false,
text:'initial for demo'
}]
}
let finalCreateStore = compose(
applyMiddleware(thunk,logger())
)(createStore)
function configureStore(initialState){
return finalCreateStore(reducer,initialState)
}
let store = configureStore(initialState)
export default store
import { Router, Route, browserHistory } from 'react-router'
import { syncHistoryWithStore} from 'react-router-redux'
const history = syncHistoryWithStore(browserHistory, store)
import React from 'react'
import { render } from 'react-dom'
import App from '../components/App'
import store from '../redux/store'
import {Provider} from 'react-redux'
import { Router, Route, browserHistory } from 'react-router'
import { syncHistoryWithStore} from 'react-router-redux'
import TodoList from '../components/TodoList.js'
import TodoInput from '../components/TodoInput.js'
const history = syncHistoryWithStore(browserHistory, store)
render(
<Provider store={store} >
<Router history={history}>
<Route path="/" foo="bar" component={App}>
<Route path="/as" component={TodoList}/>
<Route path="/ass" component={TodoInput}/>
</Route>
</Router>
</Provider>,
document.getElementById('app')
)
import React, { Component } from 'react'
import TodoInput from './TodoInput.js'
import TodoList from './TodoList.js'
import {connect} from 'react-redux'
class App extends Component {
render() {
return (
<div>
<h1>Todo list</h1>
{React.cloneElement(this.props.children, { todos:this.props })}
</div>
)
}
}
function mapStateToProp(state){
return state
}
export default connect(mapStateToProp)(App)
import React, { Component } from 'react'
import TodoInput from './TodoInput.js'
import TodoList from './TodoList.js'
import {connect} from 'react-redux'
class App extends Component {
checkIfRouteHasChild(props){
if(props.children!=null){
return React.cloneElement(props.children, { todos:props})
}else{
return
}};
render() {
return (
<div>
<h1>Todo list</h1>
{(()=>this.checkIfRouteHasChild(this.props))()}
</div>
)
}
}
function mapStateToProp(state){
return state
}
export default connect(mapStateToProp)(App)
let finalCreateStore = compose(
applyMiddleware(thunk,logger()),window.devToolsExtension ? window.devToolsExtension() : f => f
)(createStore)
function configureStore(initialState){
return finalCreateStore(reducer,initialState)
}
let store = configureStore(initialState)
export default store