美文网首页
Vue中的组件

Vue中的组件

作者: Miss_麦兜 | 来源:发表于2017-07-16 21:17 被阅读0次

什么是组件?

组件可以扩展 HTML 元素,封装可重用的代码。

使用组件

注册

  • 全局注册
Vue.component(tagName, options)
  • 局部注册
    通过Vue实例的components属性注册,只在父模板中可用。

DOM模板解析

像一些元素 <ul><ol><table><select> 限制了能被它包裹的元素,而一些像 <option> 这样的元素只能出现在某些其它元素内部。需要使用特殊的 is 属性:

<table>
  <tr is="my-row"></tr>
</table>

data为什么必须是函数?

原因

在同一父模板中重复使用一个组件时,为避免不同组件之间共享同一个 data,需要为每个组件返回全新的 data 对象。

原理

注册组件的本质是建立一个组件构造器的引用。使用组件才是真正创建一个组件实例。

组件之间的通信

父子组件通信

父组件通过 props 向下传递数据给子组件,子组件通过 events 给父组件发送消息。

单项数据流

prop 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是不会反过来。这是为了防止子组件无意修改了父组件的状态。

子组件修改prop 中数据的情形
  1. prop 作为初始值传入后,子组件想把它当作局部数据来用;
  2. prop 作为初始值传入,由子组件处理成其它数据输出。
解决方法
  1. 定义一个局部变量,并用 prop 的值初始化它
  2. 定义一个计算属性,处理 prop 的值并返回。

非父子组件通信

使用状态管理模式。

slot 内容分发

  • 为了让组件可以组合,使用特殊的 <slot> 元素作为原始内容的插槽。
  • 父组件模板的内容在父组件作用域内编译;子组件模板的内容在子组件作用域内编译。分发内容是在父作用域内编译。
  • <slot> 元素可以用一个特殊的属性 name 来配置如何分发内容。仍然可以有一个匿名 slot,它是默认 slot,作为找不到匹配的内容片段的备用插槽。

动态组件

  • 通过使用保留的 <component> 元素,动态地绑定到它的 is 特性,我们让多个组件可以使用同一个挂载点,并动态切换。
  • 如果把切换出去的组件保留在内存中,keep-alive可以保留它的状态或避免重新渲染。

相关文章

  • Vue.js的组件化思想 —上

    一、Vue中的组件 Vue视图层的灵魂 — 组件化 组件(Component)是 Vue.js 最强大的功能之一...

  • vue 的坑

    记录vue中遇到的坑(不管是组件ele组件还是vue本身)Element 组件中的bug 寻找地址:https:/...

  • vue学习

    vue核心是组件,组件是vue实例,没有el,其他data,computed等等方法都有。组件定义在vue中,用在...

  • vue中的slot插槽的用法

    App.vue作为b.vue的父组件引用子组件 b.vue中的写法

  • Vite按需引入自定义组件unplugin-vue-compon

    unplugin-vue-components插件可以在Vue文件中自动引入组件(包括项目自身的组件和各种组件库中...

  • Vue中多个元素或组件的过渡

    Vue中多个元素的过渡 Vue中多个组件的过渡(通过动态组件实现组件的过渡动画效果)image.png

  • vue父子组件传递数据方法

    标签(空格分隔): vue 父组件向子组件传递数据 Vue中父组件向子组件传递数据用props 举个例子 父组件中...

  • 组件的局部注册

    组件和组件名 在Vue实例中通过Vue.component({/.../})绑定的组件都自动成为全局组件,不管这个...

  • vue父子组件间调用方法

    标签(空格分隔): vue 子组件中 父组件中

  • Vue/组件

    Vue/组件 创建组件 单独声明一个Vue.component,使用只需要在Vue实例下使用定义的组件名在组件中d...

网友评论

      本文标题:Vue中的组件

      本文链接:https://www.haomeiwen.com/subject/uxtxkxtx.html