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,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"> |