4自定义事件
自定义事件
  定义自定义事件
    1.可将自定义事件定义在组件 emits 选项中，所有事件名可装在一个数组
    2.当在 emits 选项中定义了原生事件 (如 click) 时，将使用组件中的事件替代原生事件
  派发事件和监听事件
    1.可以在子组件中通过$emit()派发事件并传递参数
    2.可以在父级组件通过v-on监听事件
  事件名
    1.自定义事件的事件名与组件和 prop 一样，提供了自动大小写转换
    2.在DOM中，为组件添加自定义事件监听时，事件名建议使用kebab-case命名法，派发的也是kebab-case
    3.如果在字符串模板中使用，则可以是驼峰也可以说kebab-case命名法
  验证事件
    1.验证事件和验证prop类似，只是前者使用emits后者使用props
    2.emits选项的值可以为对象，对象中每个属性名表示事件名，属性的值表示事件相关的验证
    3.相关验证通常是一个函数，函数会自动接收所监听事件的参数，其实验证事件主要就是验证事件传递的参数是否合规
    4.验证函数最终会返回一个布尔值，表示事件是否有效
  组件上的 v-model
    v-model 参数
      1.默认情况下，组件上的 v-model 使用 modelValue 作为 prop 和 update:modelValue 作为事件
      2.可以通过v-model的参数来修改modelValue，如v-model:xxx
      3.修改后的事件名对应变成update:xxx
    多个 v-model 绑定
      1.可以在单个组件实例上创建多个 v-model 绑定
      2.每个 v-model 将同步到不同的 prop，而不需要在组件中添加额外的选项
    处理 v-model 修饰符
      1.v-model的内置修饰符有.trim、.number 和 .lazy
      2.Vue3中可以为v-model自定义修饰符，通过modelModifiers
      3.对于带参数的 v-model 绑定，生成的 prop 名称将为 arg + "Modifiers"