Commit 6dbbdbac76c2c3795e12dd346f6310d1b70f6a7d
1 parent
b7c7c468
perf(cropper-avatar): code optimization
Showing
3 changed files
with
7 additions
and
9 deletions
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"> | ... | ... |