Files
LingChair/client/ui/preference/PreferenceStore.ts
CrescentLeaf db43de19c4 fix: 配置组件没有正确同步状态
* 问题出在我应该根据 State 决定组件状态而不是组件状态决定 State
* 踩坑了, 浪费我时间, 唉
2025-10-08 12:24:33 +08:00

27 lines
689 B
TypeScript

import React from 'react'
export default class PreferenceStore<T extends object> {
declare onUpdate: (value: T) => void
declare state: T
declare setState: React.Dispatch<React.SetStateAction<T>>
constructor() {
const _ = React.useState({} as T)
this.state = _[0]
this.setState = _[1]
}
createUpdater() {
return (key: string, value: unknown) => {
const newValue = {
...this.state,
[key]: value,
}
this.setState(newValue)
this.onUpdate?.(newValue)
}
}
setOnUpdate(onUpdate: (value: T) => void) {
this.onUpdate = onUpdate
}
}