Skip to content

Commit

Permalink
use redux for better state management
Browse files Browse the repository at this point in the history
  • Loading branch information
aviaryan committed Jul 23, 2017
1 parent c40bd2b commit 098a6c6
Show file tree
Hide file tree
Showing 7 changed files with 49 additions and 5 deletions.
3 changes: 2 additions & 1 deletion package.json
Expand Up @@ -9,7 +9,8 @@
"preact-compat": "^3.16.0",
"react": "^15.5.4",
"react-dom": "^15.5.4",
"react-router-dom": "^4.1.2"
"react-router-dom": "^4.1.2",
"redux": "^3.7.2"
},
"devDependencies": {
"babel-core": "^6.24.1",
Expand Down
6 changes: 5 additions & 1 deletion src/components/Project/Project.jsx
Expand Up @@ -4,6 +4,7 @@ import GeoPattern from 'geopattern'
import Tag from '../Tag/Tag'
import styles from './Project.css'
import ProjectLinks from '../ProjectLinks/ProjectLinks'
import store from '../../lib/state'

export default class Project extends Component {
constructor(props) {
Expand All @@ -20,7 +21,10 @@ export default class Project extends Component {

desClick(event) {
let query = document.getElementById('search').value;
window.location.href = '#/' + this.props.id + '?' + query;
store.dispatch({type: 'PUT', data: {
search: query
}});
window.location.href = '#/' + this.props.id;
}

render() {
Expand Down
14 changes: 14 additions & 0 deletions src/lib/state.js
@@ -0,0 +1,14 @@
import {createStore} from 'redux'

let manager = (state = {}, action) => {
switch (action.type) {
case 'PUT':
return action.data;
default:
return state;
}
};

let store = createStore(manager);

export {store as default};
8 changes: 8 additions & 0 deletions src/screens/App/App.jsx
Expand Up @@ -7,6 +7,7 @@ import styles from './App.css'

import lib from '../../lib/utils'
import projects from '../../data/projects'
import store from '../../lib/state'


export default class App extends Component {
Expand All @@ -19,9 +20,16 @@ export default class App extends Component {
}

componentDidMount() {
// use query param
let searchText = this.props.location.search.substring(1);
if (searchText) { // optimize, only needed when search has something
lib.setSearch(searchText);
return;
}
// use internal state
let st = store.getState();
if (st.search !== undefined && st.search){
lib.setSearch(st.search);
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/screens/ProjectDetail/ProjectDetail.jsx
Expand Up @@ -31,7 +31,7 @@ export default class ProjectDetail extends Component {
return (
<div className={[appStyles.app, styles.page].join(' ')}>
<div className={styles.name}>
<a href={"#" + this.props.location.search} className={styles.backLink}></a>
<a href="#" className={styles.backLink}></a>
{project.name}
</div>

Expand Down
2 changes: 1 addition & 1 deletion webpack.prod.js
Expand Up @@ -4,7 +4,7 @@ const ExtractTextPlugin = require('extract-text-webpack-plugin');
module.exports = {
entry: {
app: './src/index.jsx',
vendor: ['react', 'react-dom', 'geopattern', 'react-router-dom']
vendor: ['react', 'react-dom', 'geopattern', 'react-router-dom', 'redux']
},
module: {
loaders: [{
Expand Down
19 changes: 18 additions & 1 deletion yarn.lock
Expand Up @@ -2106,6 +2106,10 @@ loader-utils@^1.0.2:
emojis-list "^2.0.0"
json5 "^0.5.0"

lodash-es@^4.2.1:
version "4.17.4"
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.4.tgz#dcc1d7552e150a0640073ba9cb31d70f032950e7"

lodash.camelcase@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
Expand All @@ -2118,7 +2122,7 @@ lodash.uniq@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"

lodash@^4.14.0, lodash@^4.17.2, lodash@^4.2.0:
lodash@^4.14.0, lodash@^4.17.2, lodash@^4.2.0, lodash@^4.2.1:
version "4.17.4"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"

Expand Down Expand Up @@ -3018,6 +3022,15 @@ reduce-function-call@^1.0.1:
dependencies:
balanced-match "^0.4.2"

redux@^3.7.2:
version "3.7.2"
resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b"
dependencies:
lodash "^4.2.1"
lodash-es "^4.2.1"
loose-envify "^1.1.0"
symbol-observable "^1.0.3"

regenerate@^1.2.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260"
Expand Down Expand Up @@ -3454,6 +3467,10 @@ svgo@^0.7.0:
sax "~1.2.1"
whet.extend "~0.9.9"

symbol-observable@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d"

tapable@^0.2.5, tapable@~0.2.5:
version "0.2.6"
resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d"
Expand Down

0 comments on commit 098a6c6

Please sign in to comment.