nowrapper-json
Version:
nowrapper
55 lines (52 loc) • 1.93 kB
TypeScript
import React from "react";
import { AxiosRequestConfig } from "axios";
import {
SelectProps,
OptionProps,
OptGroupProps
} from "antd/lib/select/index.d";
type Options = Array<{ label: any; value: any; [key: string]: any }>;
export interface FetchOptions {
/** 后端接口地址 */
url: string;
/** 处理后端接口响应,返回标准options */
resMap?: (response: any) => Options;
/** 处理后端接口响应,返回的options为,res[ resMapKeys[0] ] [ resMapKeys[1] ] ...*/
resMapKeys?: Array<{ key: string }>;
/** 其他请求配置 */
axiosConfig?: AxiosRequestConfig;
/** 默认选项 */
defaultOptions?: Options;
}
export interface SuggestOptions {
/** 后端接口地址 */
url: string;
/** 处理后端接口响应,返回标准options */
resMap?: (response: any) => Options;
/** 处理后端接口响应,返回的options为,res[ resMapKeys[0] ] [ resMapKeys[1] ] ...*/
resMapKeys?: Array<{ key: string }>;
/** 其他请求配置 */
axiosConfig?: AxiosRequestConfig;
/** 第一个请求参数的name */
name: string;
/** 输入停顿时间,发起请求,默认300ms */
debounce?: number;
/** 默认选项 */
defaultOptions?: Options;
}
export type ISelectProps = SelectProps & {
/** 一次请求数据生成选项 */
fetchOptions?: FetchOptions;
/** 选项 */
options?: Array<{ label: string; value: any }>;
/** 实时搜索请求数据生成选项 */
suggestOptions?: SuggestOptions;
/** 将options通过Select.Option标签生成选项,用以在Select组件onChange时获取Option上的属性 */
childrenMode?: boolean;
/** 与chilrenMode结合使用,自定义选项内容 */
optionRender?: (opt: any) => React.ReactNode;
};
export default class Select extends React.Component<ISelectProps, any> {
static Option: React.ClassicComponentClass<OptionProps>;
static OptGroup: React.ClassicComponentClass<OptGroupProps>;
}