From 513ae4ca020e4ee7c5c90ca896dd4636e254e05a Mon Sep 17 00:00:00 2001 From: James Long Date: Wed, 18 Nov 2015 00:10:32 -0500 Subject: [PATCH] add a basic example --- examples/.gitignore | 2 ++ examples/basic/actions/count.js | 17 +++++++++++++++ examples/basic/app.js | 30 +++++++++++++++++++++++++++ examples/basic/components/App.js | 33 ++++++++++++++++++++++++++++++ examples/basic/components/Bar.js | 9 ++++++++ examples/basic/components/Foo.js | 9 ++++++++ examples/basic/components/index.js | 5 +++++ examples/basic/constants.js | 5 +++++ examples/basic/index.html | 10 +++++++++ examples/basic/package.json | 20 ++++++++++++++++++ examples/basic/reducers/count.js | 17 +++++++++++++++ examples/basic/reducers/index.js | 3 +++ examples/basic/webpack.config.js | 29 ++++++++++++++++++++++++++ 13 files changed, 189 insertions(+) create mode 100644 examples/.gitignore create mode 100644 examples/basic/actions/count.js create mode 100644 examples/basic/app.js create mode 100644 examples/basic/components/App.js create mode 100644 examples/basic/components/Bar.js create mode 100644 examples/basic/components/Foo.js create mode 100644 examples/basic/components/index.js create mode 100644 examples/basic/constants.js create mode 100644 examples/basic/index.html create mode 100644 examples/basic/package.json create mode 100644 examples/basic/reducers/count.js create mode 100644 examples/basic/reducers/index.js create mode 100644 examples/basic/webpack.config.js diff --git a/examples/.gitignore b/examples/.gitignore new file mode 100644 index 0000000..76add87 --- /dev/null +++ b/examples/.gitignore @@ -0,0 +1,2 @@ +node_modules +dist \ No newline at end of file diff --git a/examples/basic/actions/count.js b/examples/basic/actions/count.js new file mode 100644 index 0000000..ceea2b6 --- /dev/null +++ b/examples/basic/actions/count.js @@ -0,0 +1,17 @@ +const constants = require('../constants'); + +function increase(n) { + return { + type: constants.INCREASE, + amount: n + }; +} + +function decrease(n) { + return { + type: constants.DECREASE, + amount: n + }; +} + +module.exports = { increase, decrease }; diff --git a/examples/basic/app.js b/examples/basic/app.js new file mode 100644 index 0000000..0ab54c7 --- /dev/null +++ b/examples/basic/app.js @@ -0,0 +1,30 @@ +const React = require('react'); +const ReactDOM = require('react-dom'); +const { createStore, combineReducers } = require('redux'); +const { Provider } = require('react-redux'); +const { Router, Route } = require('react-router'); +const createHistory = require('history/lib/createHashHistory'); +const { syncReduxAndRouter, routeReducer } = require('redux-simple-router'); + +const reducers = require('./reducers'); +const { App, Foo, Bar } = require('./components'); + +const reducer = combineReducers(Object.assign({}, reducers, { + routing: routeReducer +})); +const store = createStore(reducer); +const history = createHistory(); + +syncReduxAndRouter(history, store); + +ReactDOM.render( + + + + + + + + , + document.getElementById('mount') +); diff --git a/examples/basic/components/App.js b/examples/basic/components/App.js new file mode 100644 index 0000000..731f521 --- /dev/null +++ b/examples/basic/components/App.js @@ -0,0 +1,33 @@ +const React = require('react'); +const { Link } = require('react-router'); +const { connect } = require('react-redux'); +const { updatePath } = require('redux-simple-router'); +const { increase, decrease } = require('../actions/count'); + +const App = React.createClass({ + render: function() { + return ( +
+
+ Links: + {' '} + Foo + {' '} + Bar +
+ {this.props.children} +
+ {this.props.number} + + + +
+
+ ); + } +}); + +module.exports = connect( + state => ({ number: state.count.number }), + { increase, decrease, updatePath } +)(App); diff --git a/examples/basic/components/Bar.js b/examples/basic/components/Bar.js new file mode 100644 index 0000000..71b50b8 --- /dev/null +++ b/examples/basic/components/Bar.js @@ -0,0 +1,9 @@ +const React = require('react'); + +const Bar = React.createClass({ + render: function() { + return
bar
; + } +}); + +module.exports = Bar; diff --git a/examples/basic/components/Foo.js b/examples/basic/components/Foo.js new file mode 100644 index 0000000..71ac8b0 --- /dev/null +++ b/examples/basic/components/Foo.js @@ -0,0 +1,9 @@ +const React = require('react'); + +const Foo = React.createClass({ + render: function() { + return
foo
; + } +}); + +module.exports = Foo; diff --git a/examples/basic/components/index.js b/examples/basic/components/index.js new file mode 100644 index 0000000..ada5a1a --- /dev/null +++ b/examples/basic/components/index.js @@ -0,0 +1,5 @@ +const App = require('./App'); +const Foo = require('./Foo'); +const Bar = require('./Bar'); + +module.exports = { App, Foo, Bar }; diff --git a/examples/basic/constants.js b/examples/basic/constants.js new file mode 100644 index 0000000..ae8da90 --- /dev/null +++ b/examples/basic/constants.js @@ -0,0 +1,5 @@ + +module.exports = { + INCREASE: 'INCREASE', + DECREASE: 'DECREASE' +} diff --git a/examples/basic/index.html b/examples/basic/index.html new file mode 100644 index 0000000..92494fd --- /dev/null +++ b/examples/basic/index.html @@ -0,0 +1,10 @@ + + + + redux-simple-router basic example + + +
+ + + diff --git a/examples/basic/package.json b/examples/basic/package.json new file mode 100644 index 0000000..e9fac6c --- /dev/null +++ b/examples/basic/package.json @@ -0,0 +1,20 @@ +{ + "name": "rsr-basic-example", + "version": "0.0.0", + "dependencies": { + "history": "^1.13.1", + "react": "^0.14.2", + "react-dom": "^0.14.2", + "react-redux": "^4.0.0", + "react-router": "^1.0.0", + "redux": "^3.0.4", + "redux-simple-router": "0.0.8" + }, + "devDependencies": { + "babel-core": "^6.1.21", + "babel-loader": "^6.2.0", + "babel-preset-es2015": "^6.1.18", + "babel-preset-react": "^6.1.18", + "webpack": "^1.12.6" + } +} diff --git a/examples/basic/reducers/count.js b/examples/basic/reducers/count.js new file mode 100644 index 0000000..c375472 --- /dev/null +++ b/examples/basic/reducers/count.js @@ -0,0 +1,17 @@ +const constants = require('../constants'); + +const initialState = { + number: 1 +} + +function update(state = initialState, action) { + if(action.type === constants.INCREASE) { + return { number: state.number + action.amount }; + } + else if(action.type === constants.DECREASE) { + return { number: state.number - action.amount }; + } + return state; +} + +module.exports = update; diff --git a/examples/basic/reducers/index.js b/examples/basic/reducers/index.js new file mode 100644 index 0000000..7c055f8 --- /dev/null +++ b/examples/basic/reducers/index.js @@ -0,0 +1,3 @@ +const count = require('./count'); + +module.exports = { count }; diff --git a/examples/basic/webpack.config.js b/examples/basic/webpack.config.js new file mode 100644 index 0000000..78d1e45 --- /dev/null +++ b/examples/basic/webpack.config.js @@ -0,0 +1,29 @@ +const path = require('path'); + +module.exports = { + entry: './app.js', + output: { + path: path.join(__dirname, 'dist'), + filename: 'bundle.js' + }, + module: { + loaders: [{ + test: /\.js$/, + loaders: ['babel?presets[]=react,presets[]=es2015'], + exclude: /node_modules/, + include: __dirname + }] + } +} + + + +// This will make the redux-simpler-router module resolve to the +// latest src instead of using it from npm. Remove this if running +// outside of the source. +var src = path.join(__dirname, '..', '..', 'src') +var fs = require('fs') +if (fs.existsSync(src)) { + // Use the latest src + module.exports.resolve = { alias: { 'redux-simple-router': src } } +}