提交 6dbbdbac 编写于 作者: V Vben

perf(cropper-avatar): code optimization

上级 b7c7c468
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
import Cropper from 'cropperjs'; import Cropper from 'cropperjs';
import 'cropperjs/dist/cropper.css'; import 'cropperjs/dist/cropper.css';
import { useDesign } from '/@/hooks/web/useDesign'; import { useDesign } from '/@/hooks/web/useDesign';
import { useThrottleFn } from '@vueuse/shared'; import { useDebounceFn } from '@vueuse/shared';
type Options = Cropper.Options; type Options = Cropper.Options;
...@@ -47,7 +47,6 @@ ...@@ -47,7 +47,6 @@
src: { type: String, required: true }, src: { type: String, required: true },
alt: { type: String }, alt: { type: String },
circled: { type: Boolean, default: false }, circled: { type: Boolean, default: false },
realTimePreview: { type: Boolean, default: true }, realTimePreview: { type: Boolean, default: true },
height: { type: [String, Number], default: '360px' }, height: { type: [String, Number], default: '360px' },
crossorigin: { crossorigin: {
...@@ -68,7 +67,7 @@ ...@@ -68,7 +67,7 @@
const isReady = ref(false); const isReady = ref(false);
const { prefixCls } = useDesign('cropper-image'); const { prefixCls } = useDesign('cropper-image');
const throttleRealTimeCroppered = useThrottleFn(realTimeCroppered, 80); const debounceRealTimeCroppered = useDebounceFn(realTimeCroppered, 80);
const getImageStyle = computed((): CSSProperties => { const getImageStyle = computed((): CSSProperties => {
return { return {
...@@ -107,13 +106,13 @@ ...@@ -107,13 +106,13 @@
emit('ready', cropper.value); emit('ready', cropper.value);
}, },
crop() { crop() {
throttleRealTimeCroppered(); debounceRealTimeCroppered();
}, },
zoom() { zoom() {
throttleRealTimeCroppered(); debounceRealTimeCroppered();
}, },
cropmove() { cropmove() {
throttleRealTimeCroppered(); debounceRealTimeCroppered();
}, },
...props.options, ...props.options,
}); });
......
...@@ -18,9 +18,8 @@ ...@@ -18,9 +18,8 @@
import { useI18n } from '/@/hooks/web/useI18n'; import { useI18n } from '/@/hooks/web/useI18n';
const props = { const props = {
src: { type: String, required: true },
width: { type: [String, Number], default: '200px' }, width: { type: [String, Number], default: '200px' },
uploadApi: { type: Function as PropType<({ file: Blob, name: stirng }) => Promise<void>> }, uploadApi: { type: Function as PropType<({ file: Blob, name: string }) => Promise<void>> },
}; };
export default defineComponent({ export default defineComponent({
......
<template> <template>
<PageWrapper title="图片裁剪示例" content="需要开启测试接口服务才能进行上传测试!"> <PageWrapper title="图片裁剪示例" content="需要开启测试接口服务才能进行上传测试!">
<CollapseContainer title="头像裁剪"> <CollapseContainer title="头像裁剪">
<CropperAvatar :src="cropperImg" :uploadApi="uploadApi" /> <CropperAvatar :uploadApi="uploadApi" />
</CollapseContainer> </CollapseContainer>
<CollapseContainer title="矩形裁剪" class="my-4"> <CollapseContainer title="矩形裁剪" class="my-4">
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册