rc-form 在 typescript 中的报错处理
1.创建 声明模块
index.d.ts
import { Component, ClassicComponentClass, ClassType, ComponentClass, ComponentSpec, Mixin, ReactNode, ClassicComponent, ComponentState } from "react";
import PropTypes, { Requireable, InferProps } from "prop-types";
export interface ValidateMessages {
'default'?: string;
required?: string;
'enum'?: string;
whitespace?: string;
date?: {
format?: string;
parse?: string;
invalid?: string;
};
types?: {
string?: string;
method?: string;
array?: string;
object?: string;
number?: string;
date?: string;
boolean?: string;
integer?: string;
float?: string;
regexp?: string;
email?: string;
url?: string;
hex?: string;
};
string?: {
len?: string;
min?: string;
max?: string;
range?: string;
};
number?: {
len?: string;
min?: string;
max?: string;
range?: string;
};
array?: {
len?: string;
min?: string;
max?: string;
range?: string;
};
pattern?: {
mismatch?: string;
};
clone?: () => ValidateMessages;
}
export class Field { [s: string]: any }
export type FormTrigger = 'onChange' | 'onBlur' | 'onMouseOver' | 'onMouseMove' | 'onMouseOut' |
'onEnter' | 'onLeave';
export type FormValidateType = 'string' | 'number' | 'boolean' | 'method' | 'regexp' | 'integer' |
'float' | 'array' | 'object' | 'enum' | 'date' | 'url' | 'hex' | 'email';
export interface FormValidateRule {
type?: FormValidateType;
required?: boolean;
message?: any;
pattern?: RegExp;
range?: { min?: number; max?: number };
len?: number;
role?: { type: "enum", enum: any[] };
fields?: {
[fieldName: string]: FormValidateRule;
[fieldIndex: number]: FormValidateRule;
};
defaultField?: FormValidateRule;
transform?: (value: any) => any;
asyncValidator?(rule: FormValidateRule, value: any): Promise<any>;
asyncValidator?(rule: FormValidateRule, value: any, callback: (error?: any) => void): void;
validator?(
rule: FormValidateRule,
value: any,
callback?: (error?: Error) => void,
source?: ValidateValues,
options?: ValidateFieldsOptions
): boolean | Error | Error[];
[ruleName: string]: any;
}
export interface GetFieldPropsOptions {
valuePropName?: string;
getValueProps?(value: any): any;
getValueFromEvent?(e: any): any;
initialValue?: any;
normalize?(value: any, prev: any, all: any): any;
trigger?: FormTrigger;
validateTrigger?: FormTrigger;
rules?: FormValidateRule | FormValidateRule[];
validateFirst?: boolean;
validate?: { trigger?: FormTrigger; rules?: FormValidateRule | FormValidateRule[] };
hidden?: boolean;
preserve?: boolean;
}
export type ValidateErrors = {
[fieldName: string]: {
errors: Array<{ message: string; field: string; [s: string]: any }>
}
} | null;
export type ValidateValues = {
[fieldName: string]: any
};
export type ValidateFieldsOptions = {
suppressWarning?: boolean;
first: boolean;
firstFields?: boolean | string[];
force?: boolean;
messages?: ValidateMessages;
[s: string]: any;
};
export interface WrappedFormMethods {
getFieldProps(name: string, options: GetFieldPropsOptions): any;
getFieldDecorator(name: string, option: any): (node: ReactNode) => ReactNode;
getFieldsValue(fieldName?: string[]): any;
getFieldValue(fieldName: string): any;
getFieldInstance(fieldName: string): any;
setFieldsValue(changedValues: any, callback: (...args: any[]) => any): void;
setFields(maybeNestedFields: any, callback: (...args: any[]) => any): void;
setFieldsInitialValue(initialValues: any): void;
validateFields(fieldNames: string[], options: ValidateFieldsOptions, callback: (errors: ValidateErrors, values: any[]) => void): Promise<any>;
validateFields(fieldNames: string[], options: ValidateFieldsOptions): Promise<any>;
validateFields(options: ValidateFieldsOptions, callback: (errors: ValidateErrors, values: any[]) => void): Promise<any>;
validateFields(fieldNames: string[], callback: (errors: ValidateErrors, values: any[]) => void): Promise<any>;
validateFields(callback: (errors: ValidateErrors, values: any[]) => void): Promise<any>;
getFieldsError(names?: string[]): any;
getFieldError(name: string): any;
isFieldValidating(name: string): boolean;
isFieldsValidating(names?: string[]): boolean;
isFieldTouched(name: string): boolean;
isFieldsTouched(names?: string[]): boolean;
isSubmitting(): boolean; // Deprecated
submit(callback: (setSubmitting: () => void) => void): void // Deprecated
resetFields(names?: string[]): void;
}
type Shaped<P> = {
[K in keyof P]: PropTypes.Requireable<(...args: any[]) => any>;
}
export interface FormMixin<P, S> extends Array<Mixin<P, S>> {
getForm(): WrappedFormMethods;
}
export type WrappedFormClass<P> = ComponentClass<P> & WrappedFormMethods;
export type Decorate<P> = (WrappedComponent: ComponentClass<P>) => WrappedFormClass<P>;
export type FormPropsType<F> = { [K in keyof F]: WrappedFormMethods; };
export type PropsWithForm<P, F> = P & FormPropsType<F>;
export interface CreateFormOptions<P> {
validateMessages?: ValidateMessages;
onFieldsChange?: (props: P, changed: any, all: any) => void;
onValuesChange?: (props: P, changed: any, all: any) => void;
mapProps?: (props: P) => P;
mapPropsToFields?: (props: P) => void;
fieldNameProp?: string;
fieldMetaProp?: string;
fieldDataProp?: string;
formPropName?: string;
name?: string;
withRef?: boolean; // deprecated
}
export function createForm<P>(options?: CreateFormOptions<P>): Decorate<P>;
export function createFormField(field: any): Field;
export const formShape: Requireable<InferProps<Shaped<WrappedFormMethods>>>;
declare module 'rc-form';
2.置于
node_modules/rc-form/lib/index.d.ts

3.使用
import { createForm } from 'rc-form';
...
interface IProps {
form: any;
}
...
export default createForm<IProps>()(LeaveMessage);
取值
const { getFieldProps } = this.props.form;
<input {...getFieldProps('username', {
onChange(){}, // have to write original onChange here if you need
rules: [{required: true}],
})}/>
handleSubmit = () => {
this.props.form.validateFields((error:any, value:any) => {
console.log(error, value);
});
}
或者,在 package.json 中
"rc-form": "https://github.com/crazyCode2/rc-form.git",
.
rc-form 在 typescript 中的报错处理的更多相关文章
- IE对象最后一个属性后不要加逗号,否则在IE7及以下版本中会报错
某函数返回一个对象,如果在最后一个属性后加逗号,IE7及以下版本中会报错 正确代码: return{ top:rect.top-top, bottom:rect.bottom-top, left:re ...
- iOS-C文件添加到iOS项目中,运行报错
iOS-C文件添加到iOS项目中,运行报错 问题: 往项目中添加一个空的c文件, 编译运行; 出现2,30个编译错误. 原因: 由于在项目中添加了Pch文件,在文件中所有代码还没有开始运行之前, pc ...
- maven web 项目中启动报错 Java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
主要原因是maven项目里面的jar包吗,没有导入到项目中 maven web 项目中启动报错 Java.lang.ClassNotFoundException: org.springframewor ...
- java中JDBC报错(一)
java中JDBC报错(一) 1.具体报错如下 com.mysql.jdbc.MySqlDataTruncation:Data truncation:Data too long for column ...
- IntelliJ IDEA中项目报错org.xml.sax.SAXParseException; lineNumber: 3; columnNumber: 8 或maven操作compile报resource使用utf8这样的编码错
问题:项目开发工具已经setting成utf-8 并且项目各方面的配置文件包括maven这些的pom.xml里的配置都已经设置为utf-8 但是还报错 IntelliJ IDEA中项目报错org.xm ...
- Python3.x:关于urllib中urlopen报错问题的解决方案
Python3.x:关于urllib中urlopen报错问题的解决方案 调用:urllib.urlopen(url) 报错:AttributeError: 'module' object has no ...
- maven项目中的报错问题——Dynamic Web Module 3.0 requires Java 1.6 or newer.
转自:http://www.cnblogs.com/beppezhang/p/5919221.html maven项目中的报错问题——Dynamic Web Module 3.0 requires J ...
- 基于Postman中的报错
Postman中的报错: Could not get any response 错误 Could not get any response There was an error connecting ...
- python2中的unicode()函数在python3中会报错:
python2中的unicode()函数在python3中会报错:NameError: name 'unicode' is not defined There is no such name in P ...
随机推荐
- java EE,java Web中的400,404,405等各种错误介绍
4 请求失败4xx 4xx应答定义了特定服务器响应的请求失败的情况.客户端不应当在不更改请求的情况下重新尝试同一个请求.(例如,增加合适的认证信息).不过,同一个请求交给不同服务器也许就会成功. 4. ...
- Oracle笔记(十二) 集合、序列
一.集合 在数学的操作之中存在交.差.并.补的概念,而在数据的查询中也存在此概念,有如下几个连接符号: UNION:连接两个查询,相同的部分不显示: UNION ALL:连接两个查询,相同的部分显示: ...
- Django学习:创建admin后台管理站点
Django自带一个后台管理站点,方便我们管理数据.这个界面只给管理员使用,并不对大众开放. 创建管理员用户 py manage.py createsuperuser 如下图所示: 用户名不填的话,默 ...
- kubernetes之健康状态检测
1.说明 容器探针: kubelet 对容器执行的定期诊断 探针执行方式: LivenessProbe: 判断容器是否存活 running状态, 如果不健康kubelet就会杀掉pod,根据重启策略R ...
- (转)android(SignalA)接收.net(SignalR)推送过来的消息
从网络上搜索到的Demo,自己进行了稍微的改动 Signala类库从https://github.com/erizet/SignalA获得,不过相关引用有错误,需要手动修正. 下载相关源码 packa ...
- Python项目列表
70个Python项目列表: 1.[Python 图片转字符画]2.[200行Python代码实现2048]3.[Python3 实现火车票查询工具]4.[高德API+Python解决租房问题 ]5. ...
- 箭头函数与定时器的this指向问题
函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象. 箭头函数本身没有this,this继承上级的this. 定时器中箭头函数的this指向包含定时器的函数,所以定时器中的箭头函数要 ...
- BZOJ2730 [HNOI2012]矿场搭建[点双连通分量]
看到删去一个点,需要剩下的都和关键点连通,有端联想到找点双,因为他怎么删点都是连通的. 对于一个孤立的点双,至少要设两个关键点. 如果两个点双以一个割点连接,假设断掉这个割点,两个块至少要各设一个关键 ...
- 1.打开windows中功能的快捷方式
1.打开组策略 命令:gpedit.msc 2.打开注册表 命令:regedit 3.快速打开本地安全组策略 命令:secpol.msc 4.打开服务 命令:services.msc 5.系统退域的时 ...
- python大数据初探--pandas,numpy代码示例
import pandas as pd import numpy as np dates = pd.date_range(',periods=6) dates import pandas as pd ...