Vue 组件实例属性的使用

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

前言

因为最近面试了二、三十个人,发现大部分都还是只是停留在 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,那么就要知道 v-model 只能绑定一个属性,如果父组件有多个需要和子组件的做双向绑定的属性怎么办?你可以会想到用对象或者数组。但是这可以会导致操作过于复杂。然而可以用 .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 可以传对象的啊!!

本章相关文档链接:

listeners

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

本章相关文档链接:

常用的实例属性

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

不常用的实例属性

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

先到这

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

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

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

相关文章
|
1天前
|
设计模式 JavaScript 前端开发
Vue源码学习需要哪些工具和技能
【4月更文挑战第20天】学习Vue源码需具备的工具与技能:VS Code或WebStorm作为代码编辑器,Node.js与npm管理依赖,Git操作仓库。基础包括JavaScript、ES6+语法、前端知识(HTML/CSS/浏览器原理)及Vue基础知识。进阶则需源码阅读理解能力,调试技巧,熟悉设计模式和架构思想。学习方法强调系统学习、实践与持续关注Vue最新动态。
17 8
|
1天前
|
JavaScript 前端开发 编译器
Vue 源码学习路线
【4月更文挑战第20天】探索Vue源码涉及响应式系统、虚拟DOM、模板编译等核心概念。先掌握Vue基础知识、JavaScript(ES6+)和前端工程化。从源码入口文件开始,研究响应式、虚拟DOM、模板编译、实例方法、全局API及生命周期。理解编译器和渲染器工作原理,实践编写Vue插件,参与开源项目,阅读相关文章教程,持续关注Vue最新动态。这是一个循序渐进、需要耐心和实践的过程。
7 1
|
1天前
|
JavaScript 前端开发
鼠标监视 | 拖拽方块 | Vue
鼠标监视 | 拖拽方块 | Vue
5 0
|
1天前
|
JavaScript
Vue控制是否禁用disabled属性
Vue控制是否禁用disabled属性
7 1
|
2天前
|
JavaScript 前端开发
Vue鼠标悬浮切换图片
Vue鼠标悬浮切换图片
7 0
|
2天前
|
JavaScript 前端开发 内存技术
Vue入门:构建你的第一个Vue应用程序
【4月更文挑战第22天】Vue.js 入门教程:安装 Node.js 和 npm,使用 Vue CLI (`npm install -g @vue/cli`) 创建项目,选择预设或自定义配置。在 `src/components/` 创建 `HelloWorld.vue` 组件,显示数据属性。在 `App.vue` 中引入并注册组件,启动开发服务器 (`npm run serve`) 预览。开始你的 Vue 之旅!
|
2天前
|
JavaScript 前端开发 UED
动画效果:给 Vue 应用添加过渡和动画
【4月更文挑战第22天】Vue 框架提供强大的过渡和动画功能,增强用户体验,创建流畅的用户界面。通过CSS动画、设置过渡属性和自定义过渡,开发者能实现多样化效果。同时,结合组件状态、关注性能并测试优化,确保在不同设备上运行良好,打造引人入胜的应用交互。
|
4天前
|
JavaScript
Ant design Vue 父子组件传递(代码案例--不懂的地方可以私信本博主)
Ant design Vue 父子组件传递(代码案例--不懂的地方可以私信本博主)
10 0
|
4天前
|
JavaScript 前端开发
ant design vue 配置菜单外部打开
ant design vue 配置菜单外部打开
12 0
|
4天前
|
JavaScript
ant design vue 在列表中使用插槽 例如当性别为0的时候在列表中我想显示男
ant design vue 在列表中使用插槽 例如当性别为0的时候在列表中我想显示男
7 0