react 组件库 version >= 16.8 node > 16
usePagination useVirtualList openModal/openModal2 cmx randomKey downloadFile
hooks-useQuery isURL
npm i @djgu/react-comps
yarn add @djgu/react-comps
const {
tableProps, paginationProps, debounceRefresh
} = usePagination<InterFace>(async ({ limit, offset, current }) => {
// 接口请求
return {
dataSource: [],
total: 0
}
}, [])
const {
dataSource, loading, debounceRefresh
} = useVirtualList<InterFace>(async ({ limit, offset, current }) => {
// 接口请求
return {
dataSource: [],
total: 0
}
})
const {} = useQuery()
const { activeTab } = useQuery('https://www.npmjs.com/package/@djgu/react-comps?activeTab=readme')
openModal(react18.0之前) / openModal2(react18.0之后) (以 antd5.x 为例)
import React, { useState } from 'react';
import { Modal } from 'antd';
import { IModalProps } from '@/utils/openModal';
export interface IDemoModalProps extends IModalProps {
}
export function DemoModal(props: IDemoModalProps) {
const { close, visible, ...arg } = props;
const [loading, setLoading] = useState(false)
const handleOk = () => {
setLoading(true)
close?.(true)
setLoading(false)
}
return (
<Modal
open={visible}
title="demo"
okText="确定"
cancelText="取消"
onCancel={() => close?.()}
onOk={handleOk}
confirmLoading={loading}
{...arg}
>
DemoModal
</Modal>
)
}
const { destroy } = openModal<IDemoModalProps>(DemoModal, {
afterClose: (isOk) => {
destroy()
if (isOk) {
// ...
}
}
})
cmx.add(1, 1)
cmx.sub(1, 1)
cmx.mul(1, 1)
cmx.div(1, 1)