useSyncExternalStore
This commit is contained in:
16
lib/store.ts
Normal file
16
lib/store.ts
Normal 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())
|
||||
},
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user