vue3学习笔记

语句直接写在<script setup></script>

1.父组件向子组件传值
子组件(名字cs.vue):

<template><h1 >{{ msg }}</h1>
</template><script setup>
defineProps({msg: String
})
</script>

父组件(无需注册组件)

<script setup>
import cs from './components/cs.vue'
</script>
<template><cs msg="123222" ></cs>
</template>

在这里插入图片描述
2.子组件向父组件传值
子组件(名字cs.vue):

<template><h1 @click="c">123222</h1>
</template><script setup>
const emits=defineEmits(["ccc"]);let c=function (){console.log('111');emits("ccc","cccv",{a:1})
}
</script>

父组件(无需注册组件)

<script setup>
import cs from './components/cs.vue'
let cc=function(ctext1,ctext2){console.log(ctext1);console.log(ctext2.a);
}
</script>
<template><cs  @ccc="cc"></cs>
</template>

点击效果:(因为点击触发了子组件中的c方法,固打印了111,随后触发父组件自定义事件ccc,即父组件中的cc方法,并为此方法传递两个参数即"cccv",{a:1})
在这里插入图片描述
3.页面初始化执行方法
不再需要created

<script setup>
console.log('页面初始化执行');
</script>

进入页面直接触发
在这里插入图片描述

4.响应式数据
直接创建的属性修改时页面是不会重新渲染的,固需创建响应式数据。

1.简单数据类型使用ref()函数,修改值和获取值的时候,需要.value。在模板中使用ref申明的响应式数据,可省略如let d=ref(2);d.value++;使用时直接{{d}}
2.复杂数据类型使用reactive()函数,如let d=reactive({a:2});d.a++;测试这种是响应式的
3.转换响应式对象中某个属性为单独响应式数据使用toRef(),如let d=reactive({a:2});let da=toRef(d, 'a');da.value++;
4.toRefs转换响应式对象中所有属性(也可以是一部分)为单独响应式数据,对象成为普通对象。
const obj = reactive({msg: 'hello',info: 'hi'})const { msg, info } = toRefs(obj)const hClick = () => {msg.value = 'nihao'info.vaule = 'hihi'}

5.对外暴露参数
子组件

<template><h1 @click="c">123</h1>
</template><script setup>
import { ref } from 'vue'
let c=function (){d.value++;
}
let d=ref(1);
let f=2;
defineExpose({//对外暴露d和fd,f
})
</script>

父组件

<script setup>
import cs from './components/cs.vue'
console.log('页面初始化执行');let csRef1=ref()
console.log(csRef1.value);
onMounted(()=>{//注意要在初始化后才能取到值console.log("渲染完成");console.log(csRef1.value.d);
})
</script>
<template><h1>{{ csRef1}}</h1><cs ref="csRef1"></cs>
</template>

效果:可见onMounted触发前csRef1.value是没有值的。另外暴露的多个参数响应式不会发生变化。

在这里插入图片描述
6.监听参数变化

import { ref, watch, reactive } from "vue";
let name = ref("张三");
let age = ref(18);
let person = reactive({Hobby: "photo",city: {jiangsu: ""},
});

监听refimpl数据

watch(name, (newValue, oldValue) => {console.log("new", newValue, "old", oldValue);
});
watch(age, (newValue, oldValue) => {console.log("new", newValue, "old", oldValue);
});

监听proxy数据(当监听值为proxy对象时,oldValue值将出现异常,此时与newValue相同)

// 监听proxy对象
watch(person, (newValue, oldValue) => {console.log("newValue", newValue, "oldValue", oldValue);
});

7.页面路由

npm add vue-router//安装router

看到版本4.2.4
在这里插入图片描述
创建js文件,我这里是叫router.js(若是ts文件,出现找不到模块“xxx.vue”或其相应的类型声明,可参考解决方案)

import { createRouter, createWebHashHistory,createWebHistory } from 'vue-router'
import index2 from 'xxx/index2.vue'
import index3 from 'xxx/index3.vue'
const routes = [{path: "/",redirect: "index2" //默认显示组件(路由的重定向)
},
{path: "/index2",//跳转页面所用路径name: "index2",component: index2//实际跳转的页面
},
{path: "/index3",name: "index3",component: index3
},
]
export default createRouter({history: createWebHashHistory(),//Hash用createWebHashHistory,History用createWebHistory routes,
})

main.js

import routes from "./router";
const app=createApp(App);
app.use(routes).mount('#app')

App.vue
:key="$route.fullPath"自己看情况加不加,对此参数的解释

<router-view :key="$route.fullPath" />

使用时

<router-link to="/index3">跳3</router-link>

8.使用Pinia进行一些公共参数管理

npm install pinia@2.0.14//我的vue版本是3.2.8,这里要注意一下版本冲突问题

main.js

import { createPinia } from 'pinia'
const pinia = createPinia()
const app=createApp(App);
app.use(pinia)
app..mount('#app')

piniaData.js

import { defineStore } from 'pinia'// 第一个参数是应用程序中 store 的唯一 id
export const login1 = defineStore('login', {// 推荐使用 完整类型推断的箭头函数state: () => {return {LonginName:'Eduardo',trpe: true,}},
})
export const user = defineStore('user', {// other options...
})

vue使用(具体操作看官网)

import { login1 } from './piniaData'
let store1 = login1()
let {LonginName} = storeToRefs(store1)//解构响应式参数
//修改参数啥的巴拉巴拉
store1.LonginName=store1.LonginName+"1";
。。。
store1.$reset()//重置pinia的state参数
store1.$state = { counter: 666, name: 'Paimon' }//整个替换

另:生命周期钩子

  • setup() : 开始创建组件之前,在 beforeCreate 和 created 之前执行,创建的是 data 和 method
  • onBeforeMount() : 页面/组件挂载到节点上之前执行的函数;
  • onMounted() : 页面/组件挂载完成后执行的函数;
  • onBeforeUpdate(): 页面/组件更新之前执行的函数;
  • onUpdated(): 页面/组件更新完成之后执行的函数;
  • onBeforeUnmount(): 页面/组件卸载之前执行的函数;
  • onUnmounted(): 页面/组件完成后执行的函数;
  • onActivated(): 被包含在 中的组件,会多出两个生命周期钩子函数,被激活时执行;
  • onDeactivated(): 比如从 A 组件,切换到 B 组件,A 组件消失时执行;
  • onErrorCaptured(): 当捕获一个来自子孙组件的异常时激活钩子函数。

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

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

相关文章

LeetCode--HOT100题(47)

目录 题目描述&#xff1a;105. 从前序与中序遍历序列构造二叉树&#xff08;中等&#xff09;题目接口解题思路代码 PS: 题目描述&#xff1a;105. 从前序与中序遍历序列构造二叉树&#xff08;中等&#xff09; 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preo…

【AI测试】python文字图像识别tesseract

[AI测试]python文字图像识别tesseract github官网&#xff1a;https://github.com/tesseract-ocr/tesseract python版本&#xff1a;https://github.com/madmaze/pytesseract OCR&#xff0c;即Optical Character Recognition&#xff0c;光学字符识别&#xff0c;是指通过扫…

工程制造领域:企业IT架构

一、IT组织规划架构图 1.1 IT服务保证梯队与指导思想 二、整体业务规划架构图 三、数据化项目规划架构图 四、应用系统集成架构图

CSS Flex布局

前言 Flex布局&#xff08;弹性盒子布局&#xff09; 是一种用于在容器中进行灵活和自适应布局的CSS布局模型。通过使用Flex布局&#xff0c;可以更方便地实现各种不同尺寸和比例的布局&#xff0c;使元素在容器内自动调整空间分配。 目录 容器属性 &#x1f341;display属性 &…

数据结构与算法复杂度介绍

目录 一、基本概念 二、时间复杂度 【2.1】时间复杂度概念 【2.2】大O的渐进表示法 【2.3】举例时间复杂度计算 三、空间复杂度 一、基本概念 数据结构&#xff1a;相互之间存在一种或者多种特定关系的数据元素的集合。在逻辑上可以分为线性结构&#xff0c;散列结构、树…

单片机电子元器件-按键

电子元器件 按键上有 四个引脚 1 2 、 3 4 按下之后 导通 1 3 、 2 4 初始导通 通常按键开关为机械弹性开关&#xff0c;开关在闭合不会马上稳定的接通&#xff0c;会有一连串的抖动 抖动时间的长短有机械特性来决定的&#xff0c;一般为5ms 到10 ms 。 消抖的分类 硬件消…

【大数据Hive】hive 加载数据常用方案使用详解

目录 一、前言 二、load 命令使用 2.1 load 概述 2.1.1 load 语法规则 2.1.2 load语法规则重要参数说明 2.2 load 数据加载操作演示 2.2.1 前置准备 2.2.2 加载本地数据 2.2.3 HDFS加载数据 2.2.4 从HDFS加载数据到分区表中并指定分区 2.3 hive3.0 load 命令新特性 …

vue项目配置MongoDB的增删改查操作

在Vue中配置MongoDB的增删改查操作&#xff0c;需要先安装mongoose模块来连接MongoDB数据库。 1. 在Vue项目的根目录中&#xff0c;使用命令行安装mongoose模块&#xff1a; npm install mongoose --save 2. 找到启动node的app.js文件&#xff08;我这里是在server文件中&…

Java开发之Redis(面试篇 持续更新)

文章目录 前言一、redis使用场景1. 知识分布2. 缓存穿透① 问题引入② 举例说明③ 解决方案④ 实战面试 3. 缓存击穿① 问题引入② 举例说明③ 解决方案④ 实战面试 4. 缓存雪崩① 问题引入② 举例说明③ 解决方案④ 实战面试 5. 缓存-双写一致性① 问题引入② 举例说明③ 解决…

Linux执行命令

命令格式 主命令 选项 参数&#xff08;操作对象&#xff09;例如&#xff1a; 修改主机名 hostname set-hostname 新名称显示/目录下的文件的详细信息 ls -l /命令 内置命令&#xff08;builtin&#xff09;&#xff1a;shell程序自带的命令。 外部命令&#xff1a;有独立…

多通道振弦数据记录仪应用桥梁安全监测的关键要点

多通道振弦数据记录仪应用桥梁安全监测的关键要点 随着近年来桥梁建设和维护的不断推进&#xff0c;桥梁安全监测越来越成为公共关注的焦点。多通道振弦数据记录仪因其高效、准确的数据采集和处理能力&#xff0c;已经成为桥梁安全监测中不可或缺的设备。本文将从以下几个方面…

【JavaEE】_HTML

目录 1.HTML结构 2. HTML常用标签 2.1 注释标签 2.2 标题标签&#xff1a;h1~h6 2.3 段落标签&#xff1a;p 2.4 换行标签&#xff1a;br 2.5 格式化标签 2.6 图片标签&#xff1a;img 2.7 超链接标签&#xff1a;a 2.8 表格标签 2.9 列表标签 2.10 表单标签 2.10…

PPO算法

PPO算法 全称Proximal Policy Optimization&#xff0c;是TRPO(Trust Region Policy Optimization)算法的继承与简化&#xff0c;大大降低了实现难度。原论文 算法大致流程 首先&#xff0c;使用已有的策略采样 N N N条轨迹&#xff0c;使用这些轨迹上的数据估计优势函数 A ^ …

TCP 和 UDP 的区别、TCP 是如何保证可靠传输的?

先来介绍一些osi七层模型 分为应用层、表示层、会话层、运输层、网络层、链路层、物理层。 应用层(数据)&#xff1a;确定进程之间通信的性质以及满足用户需要以及提供网络和用户应用&#xff0c;为应用程序提供服务&#xff0c;DNS&#xff0c;HTTP&#xff0c;HTTPS&#xf…

【LeetCode】剑指 Offer <二刷>(7)

目录 题目&#xff1a;剑指 Offer 14- I. 剪绳子 - 力扣&#xff08;LeetCode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 题目&#xff1a;剑指 Offer 14- II. 剪绳子 II - 力扣&#xff08;…

Java“牵手”唯品会商品详情数据,唯品会商品详情API接口,唯品会API接口申请指南

唯品会平台商品详情接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取唯品会商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片等详细信息 。 获取商品详情接口API是一种用于获取电商平台上商品详情数据的接口&#xff0c;…

Rhinoceros(犀牛)使用技巧:有关曲线和曲面的分析

Rhinoceros&#xff08;犀牛&#xff09; for Mac破解版是一款功能强大的高级建模软件&#xff0c;可以创建、编辑、分析、提供、渲染、动画与转换 NURBS 线条、曲面、实体与多边形网格。不受精度、复杂、阶数或是尺寸的限制&#xff0c;在本篇文章中&#xff0c;为您介绍的是有…

CUDA 问题 ,一直头大。。。。

1.卸载cuda ubuntu系统安装/卸载cuda和cudnn_怎么删除cudnn_Zhijun.liStudio的博客-CSDN博客ubuntu系统安装/卸载cuda和cudnn_怎么删除cudnnhttps://blog.csdn.net/weixin_45921929/article/details/128849198?ops_request_misc%257B%2522request%255Fid%2522%253A%252216939…

复现XSS漏洞及分析

XSS漏洞概述&#xff1a; 类型一&#xff1a;反射型 类型二&#xff1a;存储型 类型三&#xff1a;DOM型 复现20字符短域名绕过 一、安装BEEF 1、在Kali中运行apt install beef-xss 2、运行beef 3、在浏览器访问 二、安装galleryCMS *遇到一点小问题 提示"last…

ping: www.baidu.com: Name or service not known 写了DNS还是不行

环境描述&#xff1a;ESXI平台上&#xff0c;一台Centos7虚拟主机。 问题描述&#xff1a;平台上的其他的虚拟机可以正常ping通&#xff0c;就这台ping IP地址可以通&#xff0c;ping域名解析失败。 排查过程&#xff1a; 1、检查网卡配置文件和/etc/resolv.conf配置文件是否…