① ② ③④⑤⑥⑦⑧⑨
这里记录自定义控件,可能用到忘记的一些方法。
通过ref
向外暴漏方法。
type CollectItemTableProps = {collectId: number;};// 向外暴露的方法export type refProps = {getData: () => { dataSource: API.GoodsClassCollectItem[]; editableKeys: React.Key[] };};const CollectItemTable = React.forwardRef<refProps, CollectItemTableProps>((props: CollectItemTableProps, ref) => {// 得到类目ID,要用这个ID来检索const { collectId } = props;// 定义向外暴漏的方法React.useImperativeHandle(ref, () => ({getData: () => {return {dataSource,editableKeys,};},}));// ...........................................}
// 第一步:导入组件与类型import CollectItemTable from './CollectItemTable';import type { refProps } from './CollectItemTable';// 第二步:定义一个refconst tableRef = React.useRef<refProps>(null);// 第三步:可以通过ref的方法调用暴漏的方法const { dataSource, editableKeys } = tableRef.current?.getData();// 组件的定义<CollectItemTable collectId={collectId} ref={tableRef} />;
//设置默认值SubTable.defaultProps = {message: 'Hello World',};
style
与children
来定义样式与方法
interface SubTableProps {user: UserListItem;className?: string;style?: React.CSSProperties;children?: React.ReactNode;}
...restProps
来获取剩余的参数
const SubTable: React.FC<SubTableProps> = ({user,children,className,...restProps}) => {
import React from 'react';import ProTable from '@ant-design/pro-table';import { UserListItem, getUserList } from '@/services/user';interface SubTableProps {user: UserListItem;className?: string;style?: React.CSSProperties;children?: React.ReactNode;}const SubTable: React.FC<SubTableProps> = ({user,children,className,...restProps}) => {console.log(restProps);return (<div {...restProps}>userid:{user?.id} {user?.name}{children}</div>);};//设置默认值SubTable.defaultProps = {};export default SubTable;
FC 是 react 官方提供的一个 interface 的简写:FunctionComponent,接收一个范型。