Vue中的组件

2017-07-16  本文已影响0人  Miss_麦兜

什么是组件?

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

使用组件

注册

Vue.component(tagName, options)

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 内容分发

动态组件

上一篇 下一篇

猜你喜欢

热点阅读