UNPKG

bsl

Version:

基于React的框架和UI组件

37 lines (32 loc) 1.02 kB
import BSL from '../../typings'; import { UiUpdate } from '../../app/Dispatcher'; import { dispatch } from '../../app/Scheduler'; export interface Options<T> { /** 默认值 */ defaultValue?: T; /** 是否必填 */ required?: boolean; /** 用于触发UI更新的函数,如果传入null则采用从全局更新的模式 */ uiUpdate?: UiUpdate; } abstract class Helper<T> { constructor(options?: Options<T>) { this.required = options?.required || false; this.update = options?.uiUpdate || dispatch; } /** 在表单提交时,是否必填 */ protected readonly required: boolean; /** ui更新函数 */ protected update: UiUpdate; /** 当前值 */ protected abstract value: T; /** value的状态,可用于表单验证 */ public abstract state: BSL.RequestState; /** 改变value的值 */ public abstract onChange(value: T): boolean; /** 获取value的值 */ public getValue(): T { return this.value; } } export default Helper;