-
Notifications
You must be signed in to change notification settings - Fork 11
/
reducers.js
51 lines (38 loc) · 1.35 KB
/
reducers.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import { combineReducers } from 'redux';
import { ADD_ITEM, OF, EQUAL, CLEAR, OLDER, YOUNGER, BACK } from './actions';
import data from './data';
function relativeCalc (state = { process: ['我'], result: ['我'] }, action) {
switch (action.type) {
case ADD_ITEM:
state.process.push(action.item.value);
state.result.push(data[state.result[state.result.length - 1]][action.item.value]);
return { process: state.process, result: state.result };
case CLEAR:
return { process: ['我'], result: ['我'] };
case OLDER:
var newReuslt = state.result[state.result.length - 1]['older'];
state.process.push(newReuslt);
state.result.push(newReuslt);
return { process: state.process, result: state.result };
case YOUNGER:
var newReuslt = state.result[state.result.length - 1]['older'];
state.process.push(newReuslt);
state.result.push(newReuslt);
return { process: state.process, result: state.result };
case EQUAL:
return state;
case BACK:
if (state.process.length === 1) {
return { process: ['我'], result: ['我'] };
}
state.process.pop();
state.result.pop();
return { process: state.process, result: state.result };
default:
return state;
}
};
const relative = combineReducers({
relativeCalc
});
export default relative;