@alicloud/console-base-rc-pagination
Version:
37 lines • 1.02 kB
JavaScript
import { useCallback } from 'react';
import useModelProps from './_use-model-props';
import usePage from './use-page';
import usePages from './use-pages';
import useDispatchSetPage from './use-dispatch-set-page';
function getPageNew(value, page, pages) {
var pageNew;
if (value === '+1') {
pageNew = page + 1;
} else if (value === '-1') {
pageNew = page - 1;
} else {
pageNew = value;
}
if (pageNew < 1) {
return 1;
}
if (pageNew > pages) {
return pages;
}
return pageNew;
}
export default function useHandlePage() {
var _useModelProps = useModelProps(),
onChange = _useModelProps.onChange;
var page = usePage();
var pages = usePages();
var dispatchSetPage = useDispatchSetPage();
return useCallback(function (value) {
var pageNew = getPageNew(value, page, pages);
if (pageNew === page) {
return;
}
dispatchSetPage(pageNew);
onChange === null || onChange === void 0 ? void 0 : onChange(pageNew);
}, [page, pages, onChange, dispatchSetPage]);
}