Skip to content

Commit 229ec41

Browse files
author
Kwangsoo Shin
committed
Components: Update BaseComponent, DealDetail
* new Storage component
1 parent a94f502 commit 229ec41

File tree

6 files changed

+38
-140
lines changed

6 files changed

+38
-140
lines changed

components/CounterM.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
//hbs
2-
//dispatch
3-
41
const tmpl = require('hbs/counter.hbs');
52
const Counter = require('Counter');
63
const $ = require('jquery');
@@ -13,7 +10,6 @@ class CounterM extends Counter {
1310
this.dispatcher.on('click', (evt) => {
1411
this.dispatch({ type: evt.target.dataset.actionType });
1512
});
16-
1713
$(this.__container).append(this.dom);
1814
}
1915
render() {

libs/Storage/index.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
const { createStore, combineReducers } = require('redux');
2+
3+
let __store;
4+
5+
class Storage {
6+
constructor({ reducers = {}, initialState = {} } = {}) {
7+
__store = createStore(combineReducers(reducers), initialState);
8+
}
9+
subscribe(render) {
10+
__store.subscribe(render);
11+
}
12+
getState() {
13+
return __store.getState();
14+
}
15+
dispatch(action) {
16+
console.log(action);
17+
__store.dispatch(action);
18+
}
19+
}
20+
21+
module.exports = Storage;

parents/BaseComponent.js

Lines changed: 6 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,24 @@
1-
// const Storage = require('Storage');
2-
3-
// const noop = () => {};
4-
// const reducerEnhancer = () => {
5-
//
6-
// }
7-
// const _reducer = (state, action) => {
8-
// };
9-
// let storage;
1+
const Storage = require('Storage');
102

113
class BaseComponent {
12-
constructor({ initialStore = null, container = document.body } = {}) {
13-
this.__store = initialStore;
4+
constructor({ initialStorage = new Storage({ reducers: {}, initialState: {} }), container = document.body } = {}) {
5+
this.__storage = initialStorage;
146
this.__container = container;
15-
if (this.__store) {
16-
this.__store.subscribe(() => {
17-
this.render();
18-
});
19-
}
7+
this.__storage.subscribe(() => this.render() );
208
this.initialRender();
219
}
2210
getState() {
23-
return this.__store.getState();
11+
return this.__storage.getState();
2412
}
2513
dispatch(action) {
26-
return this.__store.dispatch(action);
14+
return this.__storage.dispatch(action);
2715
}
2816
initialRender() {
2917
// InitialRender.
3018
}
3119
render() {
3220
// Render.
3321
}
34-
// constructor({ initialStore = null, initialState = {}, container = document.body } = {}) {
35-
// if (initialStore && initialStore instanceof Storage) {
36-
// storage = initialStore;
37-
// } else {
38-
// if (initialState) { storage = new Storage({ initialState }); }
39-
// }
40-
// this.container = container;
41-
// this.initialRender();
42-
// storage.subscribe(this.render);
43-
// }
44-
//
45-
// getState() {
46-
// return storage.getState();
47-
// }
48-
//
49-
// getStorage() {
50-
// return storage;
51-
// }
52-
//
53-
// render() {
54-
// console.log('render', 'BaseComponent');
55-
// }
56-
//
57-
// dispatch(action) {
58-
// storage.dispatch(action);
59-
// }
60-
//
61-
// replaceReducer(reducer) {
62-
// storage.replaceReducer(reducer);
63-
// }
64-
6522
}
6623

6724
module.exports = BaseComponent;

parents/Storage.js

Lines changed: 0 additions & 54 deletions
This file was deleted.

roots/DealDetail.js

Lines changed: 10 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,24 @@
1-
// // Interface.
2-
// const BaseComponent = require('BaseComponent');
3-
// const { combineReducer } = require('redux');
4-
// const countReducer = requier('countReducer');
5-
//
6-
// const Slide = require('slide');
7-
// const Counter = require('CounterM');
8-
//
9-
// const initialState = { count: 0, items: [], images: [] };
10-
// let combinedReducers;
11-
//
12-
// class DealDetail extends BaseComponent {
13-
// initialRender() {
14-
// console.log(this.getState(), 'this.getState()')
15-
// // combinedReducers = {
16-
// // count: countReducer
17-
// // };
18-
// // this.replaceReducer(combineReducer(combinedReducers));
19-
// let counter = new Counter({ initialStore: this.getStorage(), container: document.querySelector('#counter') }).reducer;
20-
// this.replaceReducer({
21-
// count: counter.reducer
22-
// })
23-
// }
24-
// }
25-
//
26-
// const dealDetail = new DealDetail({ initialState });
27-
//
28-
const { createStore, combineReducers } = require('redux');
29-
const dr = require('domready');
1+
// initialize default reducer & state.
302
const initialState = {
313
count: 0,
324
images: [
335
'https://camo.githubusercontent.com/f28b5bc7822f1b7bb28a96d8d09e7d79169248fc/687474703a2f2f692e696d6775722e636f6d2f4a65567164514d2e706e67',
346
'https://camo.githubusercontent.com/f28b5bc7822f1b7bb28a96d8d09e7d79169248fc/687474703a2f2f692e696d6775722e636f6d2f4a65567164514d2e706e67',
357
]
368
};
37-
389
const dealDetailReducers = require('dealDetailReducer');
39-
const store = createStore(combineReducers(dealDetailReducers), initialState);
4010

11+
// load libs.
12+
const dr = require('domready');
13+
const Storage = require('Storage');
14+
const storage = new Storage({ reducers: dealDetailReducers, initialState });
15+
16+
// load components
4117
const CounterM = require('CounterM');
4218
const Images = require('Images');
4319

20+
// initialize.
4421
dr(() => {
45-
let counter = new CounterM({ initialStore: store, container: document.querySelector('#counter') });
46-
let images = new Images({ initialStore: store, container: document.querySelector('#images') });
22+
let counter = new CounterM({ initialStorage: storage, container: document.querySelector('#counter') });
23+
let images = new Images({ initialStorage: storage, container: document.querySelector('#images') });
4724
});

webpack.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ module.exports = {
1313
path.resolve(__dirname, 'components'),
1414
path.resolve(__dirname, 'actions'),
1515
path.resolve(__dirname, 'reducers'),
16+
path.resolve(__dirname, 'libs'),
1617
],
1718
alias: {
1819
'handlebars': 'handlebars/dist/handlebars.js',

0 commit comments

Comments
 (0)