Vue3的10种组件通信方式总结

目录

  • 引言
  • Props
  • emits
  • expose / ref
  • Non-Props
    • 单个根元素的情况
    • 多个元素的情况
  • v-model
    • 单值的情况
    • 多个 v-model 绑定
    • v-model 修饰符
  • 插槽 slot
    • 默认插槽
    • 具名插槽
    • 作用域插槽
  • provide / inject
    • 总线 bus
      • getCurrentInstance
        • Vuex
          • 安装
          • 使用
          • State
          • Getter
          • Mutation
          • Action
          • Module
        • Pinia
          • 安装
          • 注册
          • 在组件中使用
          • 啰嗦两句
        • mitt.js
          • 安装
          • 使用
        • 总结

          引言 本文讲解 Vue 3.2 组件多种通讯方式的基础用法,并且使用了 单文件组件
          子组件
          // Child.vue


          子组件
          // Child.vue

          和 props 一样,在
          子组件
          // Child.vue


          子组件
          // Child.vue

          Vue3的10种组件通信方式总结
          文章图片

          打开控制台可以看到,属性被挂到 HTML 元素上了。

          多个元素的情况
          但在 Vue3 中,组件已经没规定只能有一个根元素了。如果子组件是多个元素时,上面的例子就不生效了。
          // Child.vue

          Vue3的10种组件通信方式总结
          文章图片

          此时可以使用 $attrs 的方式进行绑定。
          // Child.vue

          Vue3的10种组件通信方式总结
          文章图片


          v-model v-model 是 Vue 的一个语法糖。在 Vue3 中的玩法就更多(晕)了。

          单值的情况
          组件上的 v-model 使用 modelValue 作为 prop 和 update:modelValue 作为事件。
          v-model 参数文档
          父组件
          // Parent.vue

          子组件
          // Child.vue

          Vue3的10种组件通信方式总结
          文章图片

          你也可以这样写,更加简单
          子组件
          // Child.vue


          多个 v-model 绑定
          多个 v-model 绑定 文档
          父组件
          // Parent.vue

          子组件
          // Child.vue

          Vue3的10种组件通信方式总结
          文章图片


          v-model 修饰符
          v-model 还能通过 . 的方式传入修饰。
          v-model 修饰符 文档
          父组件
          // Parent.vue

          子组件
          // Child.vue

          Vue3的10种组件通信方式总结
          文章图片


          插槽 slot 插槽可以理解为传一段 HTML 片段给子组件。子组件将元素作为承载分发内容的出口。
          插槽 文档
          本文打算讲讲日常用得比较多的3种插槽:默认插槽、具名插槽、作用域插槽。

          默认插槽
          插槽的基础用法非常简单,只需在 子组件 中使用标签,就会将父组件传进来的 HTML 内容渲染出来。
          默认插槽 文档
          父组件
          // Parent.vue

          子组件
          // Child.vue


          具名插槽
          具名插槽 就是在 默认插槽 的基础上进行分类,可以理解为对号入座。
          具名插槽 文档
          Vue3的10种组件通信方式总结
          文章图片

          父组件
          // Parent.vue

          子组件
          // Child.vue

          父组件需要使用