Skip to content

Commit 717490e

Browse files
committed
New: Simple state management example.
1 parent f222a5c commit 717490e

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

others/state_management.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Store {
2+
constructor(initialState) {
3+
this.state = initialState;
4+
this.listeners = [];
5+
}
6+
7+
subscribe(listener) {
8+
this.listeners.push(listener);
9+
}
10+
11+
setState(newState) {
12+
this.state = { ...this.state, ...newState };
13+
this.listeners.forEach((listener) => listener(this.state));
14+
}
15+
16+
getState() {
17+
return this.state;
18+
}
19+
}
20+
21+
const store = new Store({ count: 0 });
22+
23+
store.subscribe((state) => {
24+
console.log("State changed:", state);
25+
});
26+
27+
store.setState({ count: store.getState().count + 1 });
28+
store.setState({ count: store.getState().count + 1 });
29+

0 commit comments

Comments
 (0)