[讨论]第5章ValidateForm不使用mitt的方案

来源:5-9 ValidateForm 编码第二部分 - 尝试父子通讯

slpwlkr

2021-08-18

老师您好,我在学习第5章ValidateForm部分时,找到了一种不使用mitt库也能实现slot内节点与被插入组件沟通的方法,用到了Vue3的特性:作用域插槽
这里有一篇文章讲解了具体实现

我在项目里使用上面的方法实现了相同的功能,希望和老师分享一下~
ValidateInput.vue:

\\发出事件到父组件
onMounted(() => {
  context.emit('form-item-mounted', validateInput)
})

ValidateForm.vue:

\\模板里用插槽属性暴露handler
<slot name="default" :onFormItemMounted="onFormItemMounted"></slot>
\\加入验证函数
const onFormItemMounted = (func: ValidateFunc) => {
  validateFuncs.push(func)
}

Login.vue:

\\父组件里绑定事件
<template #default="{ onFormItemMounted }">
  <div class="mb-3">
  <label class="form-label">Email address</label>
  <validate-input :rules="emailRules" v-model="emailValue" @form-item-mounted="onFormItemMounted"
    type="email" placeholder="输入邮箱"></validate-input>
  </div>
</template>

由于慕课没有讨论区,故发到提问区,请老师见谅~

写回答

2回答

张轩

2021-08-18

同学你好 非常好的思路和扩展 非常感谢你写的这个内容 开阔了所有人的视野 我个人认为 这个方法比事件要稍微难理解一点 同时 能否把你的代码(git)补充到文章中 这样其他同学可以更好的了解这个方法。

3
2
春去_秋来
这样每个
2022-08-26
共2条回复

春去_秋来

2022-08-25

你好 可以分享个git地址吗?想看下你怎么写的

0
0

Vue3 + TS 仿知乎专栏企业级项目

带你完成前后端分离复杂项目,率先掌握 vue3 造轮子技能

3142 学习 · 2313 问题

查看课程