17 lines
387 B
TypeScript
17 lines
387 B
TypeScript
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())
|
|
},
|
|
}
|
|
}
|