Vue基础配置、组件通信、自定义指令

基础配置

Vue框架已经集成了webpack配置

小注意点

vbase 快速生成vue模板
组件名必须是多词格式(驼峰模式)
具体三种写法:
①小驼峰:abcDef.vue
②大驼峰:AbcDef.vue
③中横线:abc-def.vue
假如文件名不符合多次格式的补救办法:
导出重命名使用多词格式
在这里插入图片描述

容器
index.html中的<div id="app"></div>

在这里插入图片描述

入口文件

main.js为入口文件,里面创建了vue实例对象
render为渲染函数 render:h=>h(App),这里的App指的是同级的App.vue文件。
在这里插入图片描述

Vue文件结构

在这里插入图片描述

组件的导入导出

根组件(App.vue)(页面只能展示一个组件,即根组件,其他组件想展示只能导入根组件中)

在这里插入图片描述
style默认支持css样式

普通组件的注册使用(组件的导入导出)

组件注册的两种方式

1.局部注册:只能在注册的组件内使用

在这里插入图片描述
在这里插入图片描述

2.全局注册:所有组件内都能使用

在这里插入图片描述

scoped解决样式冲突

scoped使得样式只会作用于当前组件
在这里插入图片描述

data必须是函数

data是函数,保证每个组件实例可以维护独立的一份数据对象
每次创建新的组件实例都会新执行一次data函数,得到一个新对象

组件通信

组件之间的关系只有两类:父子关系和非父子关系
组件通信(主要是父子组件之间的数据传递)

父子组件之间的数据通信

父传子

父组件使用自定义属性向子组件传递数据
<template><div><!-- 父传子的语法:父通过自定义属性的方式,向子组件传递数据 -->
<!-- <XtShortCut :id="goodList[0].id" :name="goodList[0].name"></XtShortCut> -->
<XtShortCut :item="goodList[0]"></XtShortCut>
<XtShortCut :item="goodList[1]"></XtShortCut>
<XtShortCut :item="goodList[2]"></XtShortCut></div>
</template>
<script>
import XtShortCut from './components/XtShortCut.vue'
export default {data() {return {goodList: [{id:1,name:'方便面',price:2.5,info:'好吃不贵'},{id:2,name:'火腿',price:1.5,info:'好吃不贵'},{id:1,name:'工作餐',price:25,info:'好吃不贵'},]}},components: {XtShortCut  }}
</script>
<style lang="scss" scoped>
</style>
子组件使用props接收传递过来的数据

props:[‘属性名’]

<template><div class="goods"><h2>商品名称 {{ item.name }}</h2><p>商品单价:{{ item.price }}</p><p>商品描述:{{ item.info }}</p> </div>
</template>
<script>export default {props:['item']     // 名字必须和自定义属于的名字相同}
</script>
<style lang="scss" scoped>
.goods{margin: 10px;padding: 10px;border: 1px solid black;border-radius: 5px;
}
</style>

在这里插入图片描述

prop&data、单项数据流、props校验

子组件不能直接修改父组件的数据
在这里插入图片描述
props写成数组格式
在这里插入图片描述在这里插入图片描述
props写成对象格式(可以对接收的变量进行校验)

// props写成数组格式// props:['str','list','say']// 写成对象格式可以对接收的数据进行校验//1.required:true----------------表示父组件,必须传递这个值// 2.type:String|Number|Object|Array|Boolean|Funcation// 2.1 type:[strin,Number]// 3.default:''// 3.1默认值是对象或数组,要写成函数格式,函数中返回对象或数组props: {str: {// 在这里对接收的数据进行校验required: true,//表示父组件必须传递这个数据},age: {default:100, //如果父组件没有传age,则让age等于100},user: {default: () => {return {}  //对于默认值是数组或对象的形式,要写成函数形式}},say:{}}

子传父(通过事件)($emit)

事件名要一致

核心语法:$emit(‘事件名’,传的数据) ($emit用来触发事件)
子组件写法举例:
< button @click="$emit(‘事件名’,传的数据,..,...)"></button>
父组件写法:
<MyTest @事件名=“方法”></MyTest>
methods:{
方法(val){
//形参val接受到的就是子组件传递过来的数据
}

v-model语法糖(v-model语法糖的原理等同于父组件向子组件传递value属性和input事件,并且会自动更新value的值为input事件传递的参数)

参考

sync修饰符(更常用)

使用sync修饰符,父传子没什么变化,子传父,父不在需要另写事件接收
举例为控制子组件弹出框的显示隐藏,
在这里插入图片描述

依赖注入

父组件向子组件(后代)传递数据的一种方式
传递的对象是响应式的数据,传入的其他格式数据是非响应式的

在这里插入图片描述

ref和refs

寻找标签和组件对象(取代document.querySelector,在vue中将在整个文件中查找,而不是在单个组件中查找,不建议在vue中使用,ref只会找当前组件的匹配对象)(获取组件可以调用对应组件的对象和方法)
this.$refs包括当前组件的索引ref对象

1.如果组件中多个元素有相同的ref值,则this.$refs.xxx只找最后一个
2.循环出来之后,多个元素有相同的ref值,this.$refs.xxx找到全部
调用对应组件中的方法(什么时候加this同data一样)

在这里插入图片描述

非父子组件通信可以使用事件总线,使用 e m i t 发送,使用 emit发送,使用 emit发送,使用on接收

自定义指令(为了复用)

全局指令

全局指令在main.js入口文件中实现
使用方法:v-指令名称
每个钩子函数都有两个参数(ele,obj)
ele:绑定指令的元素
obj:指令的一些信息(比如绑定指令的值,binding.value)

Vue.directive('指令名称',{
//指令周期的钩子函数,每个钩子函数都有两个参数
bind(ele,obj){}, //不重要,只执行一次,DOM渲染之前执行里面可以进行样式操作
inserted(ele,obj){},  //重要 ,只执行一次,DOM渲染之后执行,里面可以进行行为操作
update(ele,obj){}, //重要,数据更新之后执行
componentUpdated(ele,obj){}, //不重要,父子组件都更新后执行
unbind(ele,obj){},  //不重要,指令解绑的时候执行
})

局部指令

在export default{}中实现,只能在当前指令中使用,

export default{
directives:{指令名称:{
//指令周期的钩子函数,每个钩子函数都有两个参数
bind(ele,obj){}, //不重要,只执行一次,DOM渲染之前执行里面可以进行样式操作
inserted(ele,obj){},  //重要 ,只执行一次,DOM渲染之后执行,里面可以进行行为操作
update(ele,obj){}, //重要,数据更新之后执行
componentUpdated(ele,obj){}, //不重要,父子组件都更新后执行
unbind(ele,obj){},  //不重要,指令解绑的时候执行
},  }
}

举例:通过自定义指令实现,数据到达之前,加载数据动画
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/587410.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【单】Unity _RPG项目中的问题

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a; ⭐…

MuJoCo 入门教程(一)

系列文章目录 前言 一、简介 MuJoCo 是多关节接触动力学&#xff08;Multi-Joint dynamics with Contact&#xff09;的缩写。它是一个通用物理引擎&#xff0c;旨在促进机器人、生物力学、图形和动画、机器学习以及其他需要快速、准确地仿真铰接结构与环境交互的领域的研究和开…

无缝投屏技巧:怎样将Windows电脑屏幕共享到安卓手机?

使用屏幕共享技术的好处是多方面的。首先&#xff0c;它为远程协助提供了极大的便利。当用户遇到电脑操作难题时&#xff0c;技术支持人员可以远程查看用户的屏幕&#xff0c;实时指导解决问题&#xff0c;就像他们身临其境一样。其次&#xff0c;这种技术也为教育和培训带来了…

vue3 记录页面滚动条的位置,并在切换路由时存储或者取消

需求&#xff0c;当页面内容超出了浏览器可是屏幕的高度时&#xff0c;页面会出现滚动条。当我们滚动到某个位置时&#xff0c;操作了其他事件或者跳转了路由&#xff0c;再次回来时&#xff0c;希望还在当时滚动的位置。那我们就进行一下操作。 我是利用了会话存储 sessionSto…

读取信息boot.bin和xclbin命令

bootgen读Boot.bin命令 johnjohn-virtual-machine:~/project_zynq/kv260_image_ubuntu22.04$ bootgen -read BOOT-k26-starter-kit-202305_2022.2.bin xclbinutil读xclbin命令 johnjohn-virtual-machine:~/project_zynq/kv260_image_ubuntu22.04$ xclbinutil -i kv260-smartca…

OPPO VPC 实践探索

01 概述 一年前(20年6月)&#xff0c;OPPO云网络技术底座开始支持VPC方案&#xff0c;解决了用户担心的云上安全和虚拟实例的性能问题。我们称这个版本为VPC1.0&#xff0c;其采用了先进的智能网卡加速和VXLAN隧道隔离技术&#xff0c;实现了VPC从无到有的突破。 然而由于业务快…

车载以太网AVB交换机 gPTP透明时钟 6口 DB9接口 千兆车载以太网交换机

SW1100千兆车载以太网交换机 一、设备简要分析 8端口千兆和百兆混合车载以太网交换机&#xff0c;其中包含2个通道的1000BASE-T1接口&#xff0c;5通道100BASE-T1接口和1个通道1000BASE-T标准以太网(RJ45接口)&#xff0c;可以实现车载以太网多通道交换&#xff0c;千兆和百兆…

应用层的http和https协议

HTTP和HTTPS http和https是什么&#xff1f;http 常用的协议版本http/1.0http/1.1改进http/2.0 改进 http 和https有什么区别&#xff1f; http和https是什么&#xff1f; HTTP&#xff08;超文本传输协议&#xff09;是一种用于在网络上传输超文本数据的协议。它是一种客户端-…

使用纯注解的方式管理bean对象

前置知识&#xff1a; Component , Repository , Controller , Service 这些注解只局限于自己编写的类&#xff0c;而Bean注解能把第三方库中的类实例加入IOC容器中并交给spring管理。 其中&#xff1a; Component一般用于公共类 Repository 用于dao数据访问层 Service 用…

【数字图像处理】颜色空间的转换

颜色空间的转换 CMY 空间 CMY 颜色空间正好与 RGB 颜色空间互补&#xff0c; 即用白色减去 RGB 颜色空间中的某一颜色值就等于这种颜色在 CMY 颜色空间中的值。 { C 1 − R M 1 − G Y 1 − B \begin{cases}C1-R\\M1-G\\Y1-B\end{cases} ⎩ ⎨ ⎧​C1−RM1−GY1−B​ HSV 空…

Go项目结构整洁实现|GitHub 3.5k

一、前言 hi&#xff0c;大家好&#xff0c;这里是白泽。今天给大家分享一个GitHub &#x1f31f; 3.5k 的 Go项目&#xff1a;go-backend-clean-arch https://github.com/amitshekhariitbhu/go-backend-clean-architecture 这个项目是一位老外写的&#xff0c;通过一个 HTT…

读书笔记之人生算法(5)

算法十八关7-9 跨越出身和运气&#xff0c;实现富足与自由&#xff0c;用概率思维做好决策 7非理性 非理性&#xff1a;如何管住你的动物精神什么是理性&#xff1f;理性就是非条件反射。本杰明富兰克林曾说过如何有效说服别人&#xff1a;要诉诸利益&#xff0c;而非诉诸理性…