Commit 6dbbdbac76c2c3795e12dd346f6310d1b70f6a7d

Authored by Vben
1 parent b7c7c468

perf(cropper-avatar): code optimization

src/components/Cropper/src/Cropper.vue
... ... @@ -16,7 +16,7 @@
16 16 import Cropper from 'cropperjs';
17 17 import 'cropperjs/dist/cropper.css';
18 18 import { useDesign } from '/@/hooks/web/useDesign';
19   - import { useThrottleFn } from '@vueuse/shared';
  19 + import { useDebounceFn } from '@vueuse/shared';
20 20  
21 21 type Options = Cropper.Options;
22 22  
... ... @@ -47,7 +47,6 @@
47 47 src: { type: String, required: true },
48 48 alt: { type: String },
49 49 circled: { type: Boolean, default: false },
50   -
51 50 realTimePreview: { type: Boolean, default: true },
52 51 height: { type: [String, Number], default: '360px' },
53 52 crossorigin: {
... ... @@ -68,7 +67,7 @@
68 67 const isReady = ref(false);
69 68  
70 69 const { prefixCls } = useDesign('cropper-image');
71   - const throttleRealTimeCroppered = useThrottleFn(realTimeCroppered, 80);
  70 + const debounceRealTimeCroppered = useDebounceFn(realTimeCroppered, 80);
72 71  
73 72 const getImageStyle = computed((): CSSProperties => {
74 73 return {
... ... @@ -107,13 +106,13 @@
107 106 emit('ready', cropper.value);
108 107 },
109 108 crop() {
110   - throttleRealTimeCroppered();
  109 + debounceRealTimeCroppered();
111 110 },
112 111 zoom() {
113   - throttleRealTimeCroppered();
  112 + debounceRealTimeCroppered();
114 113 },
115 114 cropmove() {
116   - throttleRealTimeCroppered();
  115 + debounceRealTimeCroppered();
117 116 },
118 117 ...props.options,
119 118 });
... ...
src/components/Cropper/src/CropperAvatar.vue
... ... @@ -18,9 +18,8 @@
18 18 import { useI18n } from '/@/hooks/web/useI18n';
19 19  
20 20 const props = {
21   - src: { type: String, required: true },
22 21 width: { type: [String, Number], default: '200px' },
23   - uploadApi: { type: Function as PropType<({ file: Blob, name: stirng }) => Promise<void>> },
  22 + uploadApi: { type: Function as PropType<({ file: Blob, name: string }) => Promise<void>> },
24 23 };
25 24  
26 25 export default defineComponent({
... ...
src/views/demo/comp/cropper/index.vue
1 1 <template>
2 2 <PageWrapper title="图片裁剪示例" content="需要开启测试接口服务才能进行上传测试!">
3 3 <CollapseContainer title="头像裁剪">
4   - <CropperAvatar :src="cropperImg" :uploadApi="uploadApi" />
  4 + <CropperAvatar :uploadApi="uploadApi" />
5 5 </CollapseContainer>
6 6  
7 7 <CollapseContainer title="矩形裁剪" class="my-4">
... ...