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接受到的就是子组件传递过来的数据
}

sync修饰符(更常用)

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

依赖注入

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

在这里插入图片描述

ref和refs

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

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

在这里插入图片描述

自定义指令(为了复用)

全局指令

全局指令在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){},  //不重要,指令解绑的时候执行
},  }
}

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

回溯算法|90.子集II

力扣题目链接 class Solution { private:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& nums, int startIndex, vector<bool>& used) {result.push_back(path);for (int i startIndex; i < nums.si…

clickhouse sql使用2

1、多条件选择 multiIf(cond_1, then_1, cond_2, then_2, …, else) select multiIf(true,0,1) 当第一条件不成立看第二条件判断 第一个参数条件参数&#xff0c;第二参数条件成立时走 2、clickhouse 在计算时候长出现NaN和Infinity异常处理 isNaN()和isInfinite()处理

某金融单位微软AD国产化替代方案分享与收获

某金融单位是宁盾长期服务的老客户&#xff0c;一直使用宁盾的2FA双因子认证&#xff08;OTP动态口令&#xff09;及网络准入服务。近日&#xff0c;该公司 IT 经理找到宁盾咨询关于微软 AD&#xff08;活动目录&#xff09;替代事宜。在与客户当面交流后&#xff0c;宁盾将客户…

Runes 生态一周要览 ▣ 2024.3.25-3.31|Runes 协议更新 BTC 减半在即

Runes 生态大事摘要 1、Casey 发布了 Runes 协议文档 RUNES HAVE DOCS&#xff0c;Github 代码库更新到 ord 0.17.0 版本&#xff0c;Casey 表示符文是一个“严肃”的代币协议。 2、Casey 公布了第一个硬编码的创世符文「UNCOMMONGOODS」 3、4月7日香港沙龙&#xff5c;聚焦「…

Linux:入门篇

文章目录 前言1. Linuxd的安装环境2.Linux的简单介绍2.1 新建目录2.2 新建文件 3.指令到底是什么&#xff1f;4.shell命令以及运行原理5.总结 前言 很多人对于Linux的学习总是感觉无法下手&#xff0c;不知道从何开始学习&#xff0c;相信这篇文章将会为你提供一个清晰的思路。…

基于PHP的校园招聘管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的校园招聘管理系统 一 介绍 此校园招聘管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为个人用户&#xff0c;企业和管理员三种。 技术栈&#xff1a;phpmysqlbootstrapphpstudyvscode 二…

实现3D模型无变形的减面渲染方法---模大狮模型网

在进行3D模型渲染时&#xff0c;减面(或降面)是一种常用的优化技术&#xff0c;用于降低模型的复杂度&#xff0c;提高渲染效率。然而&#xff0c;在减面过程中&#xff0c;若不小心可能会引起模型的形变或细节丢失。模大狮将介绍一些方法和技巧&#xff0c;帮助您在减面渲染时…

算法错题本

这里写目录标题 错题本注意数据的耦合性对于无解情况的处理思路一组数据以0为结束标记&#xff0c;如何输入到数组中&#xff0c;并计数多个数据进行比较链表删除重复元素的启发循环体里谨慎写类型定义并初始化&#xff08;一般写上就是错&#xff09;队列中读取队尾元素数组当…

AE——重构数字(Pytorch+mnist)

1、简介 AE&#xff08;自编码器&#xff09;由编码器和解码器组成&#xff0c;编码器将输入数据映射到潜在空间&#xff0c;解码器将潜在表示映射回原始输入空间。AE的训练目标通常是最小化重构误差&#xff0c;即尽可能地重构输入数据&#xff0c;使得解码器输出与原始输入尽…

篮球竞赛预约平台的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读300套最新项目持续更新中..... 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含ja…

道本科技智慧合规助力企业转型升级

在当今这个快速变化的商业世界里&#xff0c;企业合规管理已经从一项基本的监管要求转变为推动企业持续发展的关键动力。合规不仅是避免法律麻烦的盾牌&#xff0c;它还充当着引领企业向更高效、更可靠和更可持续方向发展的催化剂。而在实现这一目标的过程中&#xff0c;智慧合…

1区SCI,1个月左右录用,1周见刊,各项指标优秀,强推!

毕业推荐 SSCI • 社科类&#xff0c;分区稳步上升&#xff08;最快13天录用&#xff09; IEEE&#xff1a; • 计算机类&#xff0c;1区(TOP)&#xff0c;CCF推荐 SCIE • 计算机工程类&#xff0c;CCF推荐&#xff08;最快16天录用&#xff09; 计算机类 ● 好刊解读 …

websocket 局域网 webrtc 一对一 多对多 视频通话 的示例

基本介绍 WebRTC&#xff08;Web Real-Time Communications&#xff09;是一项实时通讯技术&#xff0c;它允许网络应用或者站点&#xff0c;在不借助中间媒介的情况下&#xff0c;建立浏览器之间点对点&#xff08;Peer-to-Peer&#xff09;的连接&#xff0c;实现视频流和&am…

k8s存储学习 emptyDir 卷

官网描述&#xff1a; 对于定义了emptyDir卷的Pod&#xff0c;在Pod被指派到某节点时此卷会被创建。就像其名称所表示的那样&#xff0c;emptyDir卷最初是空的。尽管Pod中的容器挂载emptyDir卷的路径可能相同也可能不容。但这些容器都可以读写emptyDir卷中相同的文件。当Pod因…

OpenHarmony实战:使用宏、std::bind 巧妙实现进出函数日志打印

背景 我们始终渴望了解模块的调用、时序逻辑&#xff0c;每个人都会轻易地想到在函数的入口打印一条进入 enter 相关的日志&#xff0c;在函数的出口打印一条离开 leave 相关的日志。不能有遗漏&#xff0c;我们会复制这条日志到所有关心的函数中&#xff0c;为了表明是哪个模…

桶排序---

1、算法概念 桶排序&#xff1a;一种非比较的排序算法。桶排序采用了一些分类和分治的思想&#xff0c;把元素的值域分成若干段&#xff0c;每一段对应一个桶。在排序的时候&#xff0c;首先把每一个元素放到其对应的桶中&#xff0c;再对每一个桶中的元素分别排序&#xff0c…

【数据库系统工程师】软考2024年5月报名流程及注意事项

2024年5月软考数据库系统工程师报名入口&#xff1a; 中国计算机技术职业资格网&#xff08;http://www.ruankao.org.cn/&#xff09; 2024年软考报名时间暂未公布&#xff0c;考试时间上半年为5月25日到28日&#xff0c;下半年考试时间为11月9日到12日。不想错过考试最新消息…

分享一种快速移植OpenHarmony Linux内核的方法

移植概述 本文面向希望将 OpenHarmony 移植到三方芯片平台硬件的开发者&#xff0c;介绍一种借助三方芯片平台自带 Linux 内核的现有能力&#xff0c;快速移植 OpenHarmony 到三方芯片平台的方法。 移植到三方芯片平台的整体思路 内核态层和用户态层 为了更好的解释整个内核…

Unity 使用 IL2CPP 发布项目

一、为什么用 IL2CPP Unity的IL2CPP&#xff08;Intermediate Language to C&#xff09;是一个编译技术&#xff0c;它将C#代码转换为C代码&#xff0c;然后再编译成平台相关的二进制代码。IL2CPP提供了几个优点&#xff0c;特别是在性能和跨平台部署方面。以下是IL2CPP的一些…

未来的智能起航:探索AI技术的创业新天地

在科技飞速发展的当今世界&#xff0c;人工智能&#xff08;AI&#xff09;已经成为一个热门话题。不再是科幻小说中的概念&#xff0c;AI正逐渐融入我们的生活和工作中&#xff0c;开创了全新的创业市场和机会。人工智能&#xff08;AI&#xff09;的飞速发展不仅引领了科技的…