关于使用props和定义emits的一点疑问

来源:9-4 Uploader 组件第二部分

慕莱坞0998854

2021-04-28

老师你好,这节课里有如下代码,

	{
		emits: ['file-uploaded', 'file-uploaded-error'],
		props:{
			beforeUploaded:{
				type: Function as PropType<CheckFunction>
			}
		}
	}

经过尝试,发现下面的写法好像也是可以的

	{
		props:{
			beforeUploaded:{
				type: Function as PropType<CheckFunction>
			},
			onFileUploaded:{
				//...
			},
			onFileUploadedError:{
				// ...
			}			
		}
	}

老师,我的问题是
1> 以上两种写法有什么本质上的区别嘛?
2> 如果没有的话,那么这些我们为什么需要emit这个字段以及使用emit(‘事件名’,payload)呢?是为了更清晰的表达出一个组件有哪些事件嘛?

写回答

2回答

RamirezNi

2021-06-18

emit只是uploader对消费组件(也就是调用uploader的组件)派发的一个事件,但不能直接通过emit派发的事件对uploader组件内部逻辑进行干预,简单说就是通知你一下走到这一步了,就像7点闹钟响了,响了就是告诉你现在7点了,你并不能把时间怎么样,时间依然继续走。


通过props传入的话,比如课程中的beforeupload,组件设计传入这个函数是需要返回boolean类型的值,uploader内部执行消费组件传入的函数得到结果,根据结果可以return或者提示用户等等其他逻辑。比如消费组件拿到beforeupload传递的文件就可以去判断是否符合特定格式 特定大小,超过某大小返回false就可以打断upload上传后续的逻辑

2
1
慕莱坞0998854
你好,我觉得你没有理解我提的问题,就假如说,我们在