-
Notifications
You must be signed in to change notification settings - Fork 0
/
script.js
58 lines (51 loc) · 1.44 KB
/
script.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
52
53
54
55
56
57
58
// RTK = Redux toolkit
const RTK = window.RTK;
// Creating the slice
const counterSlice = RTK.createSlice({
name: "counter",
initialState: 0,
reducers: {
increment: (state) => state + 1,
decrement: (state) => state - 1,
},
});
// Destructuring actions
const { increment, decrement } = counterSlice.actions;
// Create store
const store = RTK.configureStore({ reducer: counterSlice.reducer });
// Create dynamic variable for value
const valueEl = document.getElementById("value");
// Create render function
function render() {
// store state will be string value
valueEl.innerHTML = store.getState().toString();
}
render();
// Create subscribing for rendering the state
store.subscribe(render);
// Increment addEventListener function
document.getElementById("increment").addEventListener("click", function () {
store.dispatch(increment());
});
// Decrement addEventListener function
document.getElementById("decrement").addEventListener("click", function () {
if (store.getState() > 0) {
store.dispatch(decrement());
}
});
// Increment of an odd number
document
.getElementById("incrementIfOdd")
.addEventListener("click", function () {
if (store.getState() % 2 !== 0) {
store.dispatch(increment());
}
});
// Increment async number
document
.getElementById("incrementAsync")
.addEventListener("click", function () {
setTimeout(function () {
store.dispatch(increment());
}, 1000);
});