前言

因为最近面试了二、三十个人,发现大部分都还是只是停留在 Vue 文档的教程。有部分连教程这部分的文档也没看全。
所以稍微写一点,让新上手的 Vuer 多了解 Vue 文档的其他更需要关注的点。

因为 Vue 文档已经是个很成熟的文档,并且实现的 demo 简洁明了,我就不具体写实现代码了,文内只会贴需要关注的知识的文档地址

v-model

自定义组件上使用 v-model

一般可能会问怎么在自己写的组件上实现 v-model。因为一些同学用多了组件库,用的心安理得,完全不去想为什么组件库可以用 v-model 做各种双向绑定。问到如何自己写的时候直接懵逼了,所以这个是一定要会的。如果能在回答一下子组件可以用 model 属性,让 v-model 不再需要对 value 这个 props 做双向绑定就更好了, 说明你文档看的仔细。

其实 v-model 就是 prop + $emit 的语法糖, 可以拆成 value 和 @input

所以记住拉,如果是简单的子组件要同步数据到父组件,不要再傻傻的 prop + $emit, 在父组件里修改数据了。

本章相关文档链接:

  • v-model
  • model

多个属性的双向绑定呢

如果你会用 v-model,那么就要知道 v-model 只能绑定一个属性,如果父组件有多个需要和子组件的做双向绑定的属性怎么办?你可以会想到用对象或者数组。但是这可以会导致操作过于复杂。然而可以用 .async 修饰符完成。

本章相关文档链接:

  • .async修饰符

实例属性

attrs && props

这是个不常用的属性,但是在高级用法里非常常见。比如我把组件库里的多个组件封装一层,成为一个大的业务组件。我用这个大组件的时候需要灵活控制里面组件库的 prop,将参数透传到组件库的组件里。示例如下:


// my-search.vue
<template><el-input v-model='myValue'/><el-button>搜索</el-button>
</template>

// page.vue
<template><my-search placeholder='请输入搜索'></my-search>
</template>

有的小伙伴回答在 my-search 里定义这个 prop ,然后传到 el-input 里。然而他有 20 多个 prop,这样太麻烦了。

有聪明的小伙伴说传个对象进去,然而最后还是没解决怎么把这个对象绑定到 el-input 上。答案已经很接近了。

其实 Vue 已经帮我们把这个对象弄好了,我们只要直接在 el-input 组件上写 v-bind="$attrs"

别忘了 v-bind 可以传对象的啊!!

本章相关文档链接:

  • $attrs
  • $props
  • v-bind

listeners

上面搞定了 props 的透传,别忘了还有事件的透传。同理 Vue 已经帮我们弄好了。v-bind="$listeners"

本章相关文档链接:

  • $listeners
  • v-on

常用的实例属性

其他我们比较常用的就是 $refs$parent$children$el

不常用的实例属性

$slots$scopedSlots。slots 可以判断父组件里道理传了哪些 slot 进来。其他的大家就去官网文档里看把。

先到这

到这里应该大家能了解到,除了 Vue 文档除了教程章节,API 章节也至关重要。我觉得熟读 Vue 文档,Vue 深度就能达到一定程度。至少面试问 Vue 的话,如果连 API 都不熟,会比较扣分。如果需要更深入了解就去看源码,看优秀的组件库的实现。。

其实我有很多也是从组件库里学到的~ 建议有空多看看你经常使用的组件库源码,至少比 Vue 源码简单多了。。而且更贴合我们的使用场景

来源:https://segmentfault.com/a/1190000017483791

Vue 组件实例属性的使用相关推荐

  1. 2-2.vue的实例属性:data

    2-2.vue的实例属性:data data属性的作用 data属性的作用是存储vue实例或组件里面的数值.在vue的实例中它是以一个对象的方式(多个键值对),在组件中它是一个函数,通过函数返回一个对 ...

  2. Vue—组件实例之$on、$off

    目录 一.概述 二.详解 三.拓展 一.概述 Vue组件实例上自定义事件的监听.触发和移除. 二.详解 知识点1:$on $on本身是一个函数,作用是为组件实例绑定自定义事件,事件由$emit触发.$ ...

  3. vue的实例属性$options

    $option 是用来获取data外面的数据和方法 <script> export default {name: "Test",data() {return {};}, ...

  4. vue组件中prop属性

    Vue组件prop属性 prop大小写 单项数据流 所有的 prop 都使得其父子 prop 之间形成了一个单向下行绑定:父级 prop 的更新会向下流动到子组件中,但是反过来则不行. 每次父级组件发 ...

  5. Vue组件学习之事件总线和消息发布订阅

    简介 主要介绍事件总线的定义和编写方法和Vue是如何实现消息的订阅与发布的. 事件总线 事件总线是组件间通信的一种方式,适用于任意组件间的通信,比如毫不相干的两个组件.父子组件间.后代组件等等,都能通 ...

  6. Vue 组件通信方式居然有这么多?你了解几种

    ↓推荐关注↓ 前端技术编程 专注于分享前端技术:JS,HTML5,CSS3,Vue.js,React,Angular 等前端框架和前端开源项目推荐! 0篇原创内容 公众号 vue组件通信的方式,这是在 ...

  7. js 获取vue组件html_vue项目中,index.html数据与组件之间通信,传值,以获取MAC地址为例...

    最近在项目里接手别人的代码来做完善,其中一个是修复获取不到MAC地址的bug,仔细看了下代码,发现需要用到Activex控件. 上一位同事在写的时候把写在index.html文件中,获取mac地址的j ...

  8. vue组件间通信7种方式

    vue3.0:https://mp.weixin.qq.com/s/mLiViWTnNZ_o90kAOkTQrQ vue2.X: 1. props/$emit props:props可以是数组或对象, ...

  9. Vue 实例之全局API,实例属性,全局配置,组件进阶

    文章目录 写在前面 Vue 全局 API Vue.directive Vue.use Vue.extend Vue.set Vue.mixin Vue 实例属性 vm.$props vm.$optio ...

最新文章

  1. JS 总结之事件循环
  2. Couldn't start MySQL! while starting XAMPP
  3. python打包脚本_py2exe打包python脚本
  4. 【收集】13款Linux系统有
  5. Python的Pexpect详解 [图片]
  6. XP系统安装SQL2000企业版开启1433端口
  7. 双语经典:告别单身的必杀技之情话连篇
  8. 线程名称的获取与修改
  9. 【翻译】五步快速使用LINQPad尝鲜StreamInsight
  10. 使用cfssl生成证书时报json: cannot unmarshal object into Go value of type []csr.Name错误
  11. java实现视频在线播放并解决java.io.IOException: 您的主机中的软件中止了一个已建立的连接。
  12. 【Redis 开发与运维】总结篇
  13. 农民工看完都学会了!Android开发岗还不会这些问题,跳槽薪资翻倍
  14. so easy(并查集)
  15. 数据库学习——10-13-聚合函数+GROUP BY+HAVING学习
  16. 自学网络结构(一):Neural Architecture Search With Reinforcement Learning
  17. JavaEE:RocketMQ安装与使用
  18. java 条形码校验_Java 之 商品条形码的验证
  19. Angular4 - 路由
  20. CAS机制是什么,如何解决ABA问题

热门文章

  1. 鲸鱼网络连接_登陆鲸鱼:在网络上读书,第1部分
  2. figma设计_如何在Figma中构建设计入门套件(第1部分)
  3. 来自未来,2022 年的前端人都在做什么?
  4. CSS3透明背景表单
  5. 【MySQL】4、Select查询语句
  6. 谷歌Gboard输入法新增“无痕模式”:仅在Chrome隐身窗口中适用
  7. 使用ffmpeg录音
  8. Android之 RecyclerView,CardView 详解和相对应的上拉刷新下拉加载
  9. windows下apache报错The requested operation has failed解决方法
  10. 最速下降法(梯度下降法)