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

news2024/11/25 22:24:23

基础配置

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

154 Linux C++ 通讯架构实战9 ,信号功能添加,信号使用sa_sigaction 回调,子进程添加,文件IO详谈,守护进程添加

初始化信号 使用neg_init_signals(); 在nginx.cxx中的位置如下 //(3)一些必须事先准备好的资源&#xff0c;先初始化ngx_log_init(); //日志初始化(创建/打开日志文件)&#xff0c;这个需要配置项&#xff0c;所以必须放配置文件载入的后边&#xff1b;//(4)一些初…

Appium无线自动化实用教程

文章目录 简介核心特点工作原理使用Appium进行自动化测试的一般步骤 环境设置安装和启动Appium Server使用Node.js和npm安装Appium Server&#xff1a;启动Appium Server:命令行启动使用Appium Desktop安装和启动Appium Server&#xff1a;使用代码启动appium server 编写测试代…

矩阵的组合

重构 将原始矩阵,重构形状 例如,下图中,将AB重构为一个新的矩阵,CD重构为一个新的矩阵,EF重构为一个新的矩阵,GH重构为一个新的矩阵。 MATLAB实现 clc; clearvars; close all;X1=1:64; X1=reshape(X1,8,8)

基于YOLOv8/YOLOv5的人脸表情识别系统(附完整资源+PySide6界面+训练代码)

本篇博客呈现了一种基于深度学习的人脸表情识别系统&#xff0c;并详细展示了其实现代码。系统采纳了领先的YOLOv8算法&#xff0c;并与YOLOv7、YOLOv6、YOLOv5等早期版本进行了比较&#xff0c;展示了其在图像、视频、实时视频流及批量文件中识别人脸表情的高准确度。文章深入…

PostgreSql 01 安装,创建用户,创建数据库,创建关系

01.安装postgresql postgreSql 是在linux上 去官网找按照的方式 选择好postgreSql 的版本&#xff0c;已经Linux的发行版本 拿到命令&#xff0c;直接扔到Linux中运行即可 # 下载PGSQL的rpm包 sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpm…

【核心复现】同时考虑考虑孤岛与重构的配电网故障恢复运行策略

目录 主要内容 内容详情 1.问题引出 2.可控负荷 3.网络拓扑约束 4.算法流程 结果一览 1.原文结果 2.程序运行结果 下载链接 主要内容 该模型复现文章《同时考虑考虑孤岛与重构的配电网故障恢复运行策略》&#xff0c;以IEEE33配电网为分析对象&#xff0c;…

Flutter应用在苹果商店上架前的准备工作与注意事项

引言 &#x1f680; Flutter作为一种跨平台的移动应用程序开发框架&#xff0c;为开发者提供了便利&#xff0c;使他们能够通过单一的代码库构建出高性能、高保真度的应用程序&#xff0c;同时支持Android和iOS两个平台。然而&#xff0c;完成Flutter应用程序的开发只是第一步…

智能电表如何在新能源发电领域发挥作用

智能电表具备自动计量计费和数据传输功能&#xff0c;这使其成为配用电管理的核心设备。在新能源发电领域&#xff0c;智能电表能够实时监测和计量新能源发电设备的发电量&#xff0c;确保电能的质量和安全。同时&#xff0c;通过数据传输功能&#xff0c;智能电表可以将新能源…

[云呐]固定资产盘点报告哪个部门写

固定资产盘点报告通常由哪个部门来完成和签发呢?总体来说,固定资产盘点报告主要由资产管理部门或核算部门具体组织拟定并与财务部门共同签发。个别重大报告还需要上级领导或委员会研讨通过。  资产管理部门:  资产管理部门是直接负责公司固定资产管理工作的核心部门,它主导…

网络钓鱼升级 Darcula如何窃取用户信息

近日&#xff0c;网络安全领域一种名为 “Darcula” 的网络钓鱼欺诈&#xff08;PhaaS&#xff09;悄然兴起。这种新型钓鱼方式不同于传统的手段&#xff0c;它巧妙地利用了谷歌信息和 iMessage 的富通信服务&#xff08;RCS&#xff09;&#xff0c;成为了网络犯罪分子的新手段…

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

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

一、单层感知器(MCP人工神经元模型)

目录 前言 由来 介绍 算法原理 假设前提 一、前向传递过程&#xff08;算法训练好后的使用过程&#xff09; 补充&#xff1a;sign函数 二、训练方法&#xff08;求解权重w、偏转量b&#xff09; 写出损失函数 误分点选取 损失函数求导 梯度下降自确定w、b 算法…

救砖刷机------MTK芯片类线刷 救砖 常规线刷不开机 MTK分区表修复【二】

救砖刷机------MTK芯片类线刷 救砖 免授权的一些操作步骤与工具解析【一】 在上期的博文中解析了mtk刷机平台的一些基本选项说明和授权刷写的一些常识。这期将着重说明下mtk机型分区表损坏如何解决。 众所周知。高通分区表在高通线刷包中显而易见,在常规9008刷写中你会正常刷…

主流公链 - Fantom

Fantom&#xff1a;高性能的区块链协议 Fantom是一种开创性的区块链协议&#xff0c;旨在革新去中心化应用和数字金融领域 技术特点 共识机制 Lachesis协议&#xff1a;Fantom使用了Lachesis协议作为其共识算法。Lachesis是一种 异步拜占庭容错&#xff08;ABFT&#xff09;共…

基于springboot+vue+Mysql的火车订票管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

TikTok账号封号原因是什么?全面攻略

多人在使用TikTok的过程中都会遇到一些问题&#xff0c;比如为什么TikTok没有浏览量&#xff1f;事实上&#xff0c;这很可能是因为你的账号已被禁止。但为什么它会被封呢&#xff1f;你怎样才能解决它&#xff1f; 一、TikTok账号为什么被封&#xff1f; 1、什么是 TikTok 影…

掼蛋技巧秘籍

1、开始出牌不走牌一定是在理顺子。 2、起手出顺&#xff0c;后面一定还有两三把顺子。 3、上中场就出同花顺就一定还有大炸。 4、双贡顺子、对子是优势&#xff0c;绝对不能放。 5、单贡返牌&#xff0c;给对友单张小牌&#xff08;5以下&#xff09;&#xff0c;给对手大…

vue3中播放flv流视频,以及组件封装超全

实现以上功能的播放&#xff0c;只需要传入一个流的地址即可&#xff0c;当然组件也只有简单的实时播放功能 下面直接上组件 里面的flvjs通过npm i flv.js直接下载 <template><div class"player" style"position: relative;"><p style&…

站群CMS系统

站群CMS系统是一种用于批量建立和管理网站的内容管理系统&#xff0c;它能够帮助用户快速创建大量的网站&#xff0c;并实现对这些网站的集中管理。以下是三个在使用广泛的站群CMS系统&#xff0c;它们各具特色&#xff0c;可以满足不同用户的需求。 1. Z-BlogPHP Z-BlogPHP是…

云计算HCIE学员分享丨授人以鱼不如授人以渔

我还记得大一时&#xff0c;我对是否要报名云计算IE有着很多犹豫。当时&#xff0c;我对这个领域充满了好奇&#xff0c;但同时也担心自己是否有能力应对这样的挑战。正是在这个时候&#xff0c;我有幸认识了誉天培训机构的老师们。 我第一次接触誉天&#xff0c;就被那里的师资…