/** * @file index.tsx * * @date 2021-05-18 19:48 */ import React, { Component } from 'react'; import { BaseRenderer, FieldEvent } from '../../lib/renderer'; import { ObjectSchema, Schema, ValueOf } from '../../lib/schema'; import './checkbox'; import './objectField'; import './arrayField'; import './category'; import './date'; import './timePicker'; import './upload'; import './camerapick'; import './colorPicker'; import './oneOf'; import './enum'; import './input'; import { Watcher } from './watch'; import type { IWatchPlugin } from './watch'; interface FormProps> { schema: T; value?: Partial; keys?: string[]; onChange?: (t: Partial) => void; onError?: (msg: string | string[] | null) => void; style?: React.CSSProperties; disabled?: boolean; /** * schema 扩展配置 * effects: { * 定义 effect 标识,需要在schema中配置该属性,启用插件 * 当前支持三种行为,value, enum, schema * tokenName: { * effectValue?: EffectFn; * effectEnum?: EffectFn<{value: string; title: string}[]>; * effectSchema?: EffectFn; * } * } * */ plugins?: { effects: Record; }; } interface FormViewState { /** 默认值 */ value: Partial>; /** 是否变更 */ isChange: boolean; /** 记录当前组件,是否初次提交,第一次会用schmea 初始化value */ isCommit: boolean; } export declare class FormView extends Component>, FormViewState> { rendererRef: BaseRenderer | null; watcher: Watcher; constructor(props: FormProps>); static getDerivedStateFromProps(nextProps: { value: any; }, prevState: FormViewState): { isCommit: boolean; value?: undefined; isChange?: undefined; } | { value: any; isChange: boolean; isCommit?: undefined; } | null; onFieldChange(e: FieldEvent): void; validate(): string | string[] | null | undefined; render(): JSX.Element; } export {};