-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.tsx
90 lines (73 loc) · 3.3 KB
/
index.tsx
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
var _ = require("lodash")
const createStore = (reducer) => {
let state = reducer(undefined, { type: "__INIT" })
let subscribers = []
return {
getState: () => state,
dispatch: (action) => {
state = reducer(state, action)
subscribers.forEach((callback) => callback())
},
subsribe: (callback) => subscribers.push(callback),
}
}
const ACTIONS = {
ADD_EVENT: "ADD_EVENT",
REMOVE_EVENT: "REMOVE_EVENT",
UPDATE_EVENT: "UPDATE_EVENT",
SORT_EVENT: "SORT_EVENT",
}
const initialStateEvents = {
eventsWorld: [],
}
const reducerEvents = (state = initialStateEvents, action) => {
const new_state = { eventsWorld: [] }
switch (action.type) {
case ACTIONS.ADD_EVENT:
new_state.eventsWorld = [...state.eventsWorld]
new_state.eventsWorld.push(action.payload)
return new_state
case ACTIONS.REMOVE_EVENT:
new_state.eventsWorld = state.eventsWorld.filter((item) => {
return item.id !== action.payload.id
})
return new_state
case ACTIONS.UPDATE_EVENT:
new_state.eventsWorld = state.eventsWorld.map((item) => {
item.id == action.payload.id ? (item.text = action.payload.text) : item
return item
})
return new_state
case ACTIONS.SORT_EVENT:
new_state.eventsWorld = _.sortBy(state.eventsWorld, "id")
return new_state
default:
return state
}
}
const store = createStore(reducerEvents)
store.subsribe(() => console.log("Изменились события..."))
//удаление событий
/* store.dispatch({ type: ACTIONS.ADD_EVENT, payload: { id: '1', text: "Событие 1" }})
store.dispatch({ type: ACTIONS.ADD_EVENT, payload: { id: '2', text: "Событие 2" }})
store.dispatch({ type: ACTIONS.ADD_EVENT, payload: { id: '3', text: "Событие 3" }})
store.dispatch({ type: ACTIONS.ADD_EVENT, payload: { id: '3', text: "Событие 4" }})
console.log("store до", store.getState())
store.dispatch({ type: ACTIONS.REMOVE_EVENT, payload: { id: '2', text: "Событие 2" }})
console.log("store после", store.getState()) */
//изменение событий
/* store.dispatch({ type: ACTIONS.ADD_EVENT, payload: { id: '1', text: "Событие 1" }})
store.dispatch({ type: ACTIONS.ADD_EVENT, payload: { id: '2', text: "Событие 2" }})
store.dispatch({ type: ACTIONS.ADD_EVENT, payload: { id: '3', text: "Событие 3" }})
store.dispatch({ type: ACTIONS.ADD_EVENT, payload: { id: '3', text: "Событие 4" }})
console.log("store до", store.getState())
store.dispatch({ type: ACTIONS.UPDATE_EVENT, payload: { id: '2', text: "Событие 2 изменено" }})
console.log("store после", store.getState()) */
//сортировка событий
/* store.dispatch({ type: ACTIONS.ADD_EVENT, payload: { id: '1', text: "Событие 1" }})
store.dispatch({ type: ACTIONS.ADD_EVENT, payload: { id: '3', text: "Событие 3" }})
store.dispatch({ type: ACTIONS.ADD_EVENT, payload: { id: '4', text: "Событие 4" }})
store.dispatch({ type: ACTIONS.ADD_EVENT, payload: { id: '2', text: "Событие 2" }})
console.log("store до", store.getState())
store.dispatch({ type: ACTIONS.SORT_EVENT, payload: {}})
console.log("store после", store.getState()) */