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())
|
||
|
},
|
||
|
}
|
||
|
}
|