【译】Vue实用笔记(五):适配型组件的指令v-bind和v-on

当你使用组件思想编程时,随着应用功能的增加,为了保证组件的简洁和稳定,你不得不对你的组件进行分类和架构。

在组件思想编程中,组合组件是一个非常强大的重用和架构代码的模式。那么组合组件的让我们头疼的地方是什么呢?尽管这是一个大家都认可的概念,组合组件就是拼装已有的一个或者多个组件。

一旦我们有了一个基础组件,如BaseList,现在你想在这个基础上增加一点新功能创建一个相似的组件,如 SortableList。 我们称这样的组件为适配型组件(代理或外壳组件)。

当我们编写一个适配型组件时,为了保证组件的一致性,通常希望SortableList组件和BaseList保持相同的API。这就意味着SortableList组件要通过props传递所有的属性,并且监听BaseList的所有事件。

奇技淫巧:你可以通过v-bindv-on实现上面的功能:

<!-- SortableList  -->
<template>
  <BasicList v-bind="$props" v-on="$listeners"> <!-- ... --> </BasicList>
</template>

<script>
  import BasicList from "./BasicList";

  export default {
    props: BasicList.props,
    components: {
      BasicList
    }
  };
</script>

v-bind通过传递一个对象代替一个一个地传递所有的props属性给BasicList$props这个组件实例的所有属性。

v-on="$listeners"同样的道理,可以传监听有的事件。

这个也同样适用于双向绑定的v-model,因为v-model其实就是传递一个value属性和监听一个input的缩写。

最后,记得为了能被追踪,Vue.js 必须精确的声明组件的props属性。所以,一个快速的声明适配型组件props的方法是使用基础组件的props属性来定义他们,例如props: BasicList.props

以上就是全部内容了,如果你还没有感受到适配型组件的实际使用场景,请看下回分解。

Remember you can read this tip online (with copy/pasteable code), and don’t forget to share VueDose with your colleagues, so they also know about these tips as well!

See you next week.

Alex

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
    sherlock_6981阅读 16,094评论 2 11
  • 此文基于官方文档,里面部分例子有改动,加上了一些自己的理解 什么是组件? 组件(Component)是 Vue.j...
    陆志均阅读 3,883评论 5 14
  • 一、了解Vue.js 1.1.1 Vue.js是什么? 简单小巧、渐进式、功能强大的技术栈 1.1.2 为什么学习...
    蔡华鹏阅读 3,417评论 0 3
  • Vue 实例 属性和方法 每个 Vue 实例都会代理其 data 对象里所有的属性:var data = { a:...
    云之外阅读 2,273评论 0 6
  • 看到孩子学习,一旁的妈妈们一脸茫然,为了孩子也应该尽快提升自己各方面的能力,让我们有话可说有事可聊,做孩子的榜样,...
    杜六只小龙虾阅读 221评论 0 0