Commit 6dbbdbac76c2c3795e12dd346f6310d1b70f6a7d

Authored by Vben
1 parent b7c7c468

perf(cropper-avatar): code optimization

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