useSyncExternalStore

This commit is contained in:
Primakov Alexandr Alexandrovich
2024-11-12 20:06:45 +03:00
parent bbcfef6e23
commit fd0eb66563
9 changed files with 172 additions and 53 deletions

16
lib/store.ts Normal file
View File

@@ -0,0 +1,16 @@
export const createStore = (initialState) => {
let state = initialState
const listeners = new Set<() => void>()
return {
getState: () => state,
subscribe: (listener) => {
listeners.add(listener)
return () => {listeners.delete(listener)}
},
setState: (newState) => {
state = newState
listeners.forEach((listener) => listener())
},
}
}