vue3 setup标签使用总结

引入element-plus

	在main.js中引用并且使用中文 顺便引入图标库
const app = createApp(App); // 生成的vue实例 已经存在不需要重复创建
...
import ElementPlus from "element-plus";
import zhCn from "element-plus/dist/locale/zh-cn.mjs"; // 中文
import * as ElementPlusIconsVue from "@element-plus/icons-vue";
// 使用icon
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {app.component(key, component);
}
app.use(ElementPlus, {locale: zhCn,
}); // 使用element-plus

引入vuex

在sotre文件夹中创建index.js 以及其他的 moudle
import { createStore } from "vuex";
import app from "./moudle/app.js";export default createStore({modules: {app,},state() {return {test: 111,};},
});

其中 moudle/app.js

const app = {state: {flag: false,},getters: {getFlag(state) {return state.flag}},mutations: {setFlag: (state, payload) => {state.flag = payload}},actions: {// 是否展开左侧导航条test({commit}, payload) {return new Promise(resolve => {commit('setFlag', payload)resolve(true)})}}
}export default app

main.js中引入

const app = createApp(App); // 生成的vue实例 已经存在不需要重复创建
...
import store from './store/index'
app.use(store);

在其他页面使用

<script setup>import sideBarItem from "./sideBarItem.vue";import { reactive, computed } from "vue";import { useRoute } from "vue-router";const router = useRoute();import store from '@/store/index'const self = reactive({});const flag = computed(() => {return store.getters.getFlag;});const changeFlag = () => {store.dispatch("test", true);};
</script>

使用props

子组件:
<script setup>
import { defineProps, reactive } from "vue"; // 文档上面写着不需要引入 但是控制台有警告 所以干脆就引入了const props = defineProps({title: {type: String,default: "",},showIcon: {type: Boolean,default: true,},
});const self = reactive({showContent: true,
});const handleDisplay = () => {self.showContent = !self.showContent;
};
</script>

具体使用:

<template><div class="test"><card title="test" :showIcon="false"></card></div>
</template><script setup>
import card from "@/components/card.vue";</script>

定义emit事件

子组件:

<template><div @click="handleClick(1)">emit事件</div>
</template><script setup>
import { defineEmits } from "vue";const emit = defineEmits(["emitClick",
]);const handleClick = (index) => {emit("emitClick", index;
}</script>

使用:

<template><div class="test">2<card @emitClick="handleClick"></card></div>
</template><script setup>
import card from "@/components/card.vue";const handleClick = (index) => {console.log('index', index)
}
</script>

使用watch监听props

大部分监听还是差不多意思 这个稍微绕了点

<script setup>
import { watch, defineProps } from "vue";const props = defineProps({item: {type: Object,required: true,},
});// 监听 props 需要使用函数的方式进行返回 
watch(() => props.item, (newValue, oldValue) => {...
})
</script>

computed 计算函数

<script setup>
import { computed } from "vue";
import store from '@/store/index'const keepRouterList = computed(() => {return store.getters.getKeepRouters;
});
</script>

refs 使用

其实习惯了之后 感觉这个改动还行 能接受

<template><div><el-form ref="loginForm" class="login-form"></el-form></div>
</template><script setup>
import { reactive, ref } from 'vue'
const loginForm = ref(null) // 变量名是ref的名字 ref的初始值是nullconst self = reactive({...
})const submitForm = async () => {loginForm.value.validate((valid) => {if (valid) {    ...} else {console.log('error submit!!')return false;}})
}
const resetForm = () => {loginForm.value.resetFields();
}
</script><style scoped>
</style>

实际项目开发下来 效率没有降低多少 相比之下 代码更加简洁了不少 算是有收获
不过
不知道是vue3的原因还是vite的原因 报错提醒不太完整 永远提示在 script标签的最后一行 这就很不好找问题了
而且遇到错误就页面空白了请求文件404 这个问题得排查好久 是一个大坑

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

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

相关文章

语音识别之线性频谱图

⚠申明&#xff1a; 未经许可&#xff0c;禁止以任何形式转载&#xff0c;若要引用&#xff0c;请标注链接地址。 全文共计3077字&#xff0c;阅读大概需要3分钟 &#x1f308;更多学习内容&#xff0c; 欢迎&#x1f44f;关注&#x1f440;【文末】我的个人微信公众号&#xf…

从零开始搭建Springboot项目脚手架1:新建项目

1、技术栈 SpringBoot 3.2.5&#xff1a; 2、 新建项目 使用SpringInitializr 选择Lombok、Configuration Processor、Spring Web&#xff0c;同时IDEA也要安装Lombok插件 删除多余的Maven目录、Maven文件&#xff0c;把HELP.md改成README.md。 当然前提是已经安装好Maven和配…

力扣70 爬楼梯 C语言 动态规划 递归

题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2 阶 示例 2…

node 连接mysql操作mysql的工具类封装,node后端操作mySql、

一、工具类代码如下&#xff1a; /** Description: ------ node连接并操作mysql封装 ------* Creater: snows_l snows_l163.com* Date: 2023-04-12 15:38:57* LastEditors: snows_l snows_l163.com* LastEditTime: 2024-04-09 16:16:04* FilePath: /Website/Server/utils/conn…

Java多线程:常见的线程的创建方法及Thread类详解

目录 一.并发编程相关概念 线程与进程 多线程 Java中线程的状态 二.线程的创建方法 方法一&#xff1a;继承Thread类 方法二&#xff1a;实现Runnable接口 其他方法 三.Thread类详解 Thread常见构造方法 Thread常见属性 Thread常见方法 start() 与 run() sleep(…

Redis教程——主从复制

在上篇文章我们学习了Redis教程——管道&#xff0c;这篇文章学习Redis教程——主从复制。 主从复制 为了数据更加安全可靠&#xff0c;在实际的项目中&#xff0c;肯定是有多个Redis服务&#xff0c;主机Redis以写为主&#xff0c;从机Redis以读为主&#xff0c;当主机Redis…

长难句打卡5.7

In December 2010 America’s Federal Trade Commission (FTC) proposed adding a “do not track” (DNT) option to Internet browsers, so that users could tell advertisers that they did not want to be followed. 2010年12月&#xff0c;美国美国联邦贸易委员会(FTC)提…

在数字化转型的浪潮中,CBDB百数服务商如何破浪前行?

在信息化时代&#xff0c;传统咨询企业面临着数字化转型的挑战与机遇。如何利用数字化技术提升业务效率、增强客户黏性&#xff0c;成为了行业关注的焦点。云南析比迪彼企业管理有限公司&#xff08;CBDB&#xff09;作为云南地区的企业咨询服务提供商&#xff0c;率先与百数展…

Springai入门

一、概述 1.1发展历史 1.2大模型 大模型&#xff0c;是指具有大规模参数和复杂计算结构的机器学习模型。这些模型通常由深度神经网络构建而成&#xff0c;拥有数十亿甚至数千亿个参数。其设计目的在于提高模型的表达能力和预测性能&#xff0c;以应对更加复杂的任务和数据&…

CSS 样式清单整理:css 绘制三角形

css 绘制三角形 div {width: 0;height: 0;border-width: 0 40px 40px;border-style: solid;border-color: transparent transparent red; }实现带边框的三角形 <div id"blue"><div>#blue {position:relative;width: 0;height: 0;border-width: 0 40px …

虚幻引擎5 Gameplay框架(二)

Gameplay重要类及重要功能使用方法&#xff08;一&#xff09; 配置LOG类及PlayerController的网络机制 探索验证GamePlay重要函数、类的执行顺序与含义 我们定义自己的日志&#xff0c;专门建立一个存放自己日志的类&#xff0c;这个类继承自BlueprintFunctionLibrary 然后…

零基础怎么学鸿蒙开发?

对于零基础的学习者来说&#xff0c;掌握鸿蒙开发不仅是迈向新技术的第一步&#xff0c;更是开拓职业道路的重要机遇。随着鸿蒙系统在各行各业的应用逐渐扩展&#xff0c;对于掌握这一项技术的开发人员需求也随之增长。下文将为大家提供针对零基础学习鸿蒙开发的逻辑&#xff0…

提高曝光率与点击率:海外KOL推广与社交媒体算法的完美结合

在当今数字化时代&#xff0c;社交媒体已经成为了企业和品牌推广的重要渠道之一&#xff0c;海外KOL也在各个领域拥有着庞大的粉丝群体和影响力。然而&#xff0c;想要在众多内容中脱颖而出&#xff0c;提高推广内容的曝光率和点击率&#xff0c;仅仅依靠KOL的影响力是不够的&a…

vue + vite 使用onchange和prettier 进行文件变化监视和格式化

在现代的前端开发中&#xff0c;文件的格式化和实时监视是一个必不可少的环节。为了提高开发效率&#xff0c;我们可以利用一些工具来自动化这个过程。本文将介绍如何使用 onchange 和 prettier 来监视文件变化并进行格式化。 concurrently和onchange concurrently 是一个用于…

论文阅读-THE GENERALIZATION GAP IN OFFLINE REINFORCEMENT LEARNING(ICLR 2024)

1.Motivation 本文希望比较online RL、offline RL、序列决策和BC等方法的泛化能力(对于不同的初始状态、transition functions、reward functions&#xff0c;现阶段offline RL训练的方式都是在同一个环境下的数据集进行训练)。实验发现offline的算法相较于online算法对新环境…

Oracle-savepoint相关

总结&#xff1a;在同一个会话下&#xff0c;如果savepoint的名称相同&#xff0c;新的savepoint则会覆盖旧的savepoint&#xff0c;在不同的会话下&#xff0c;savepoint的名称相同&#xff0c;不会相互影响。 为了避免savepoint名称相同&#xff0c;可以在建立savepoint名称时…

特别提醒:2024年软考连考时间再次调整!

近期&#xff0c;辽宁省发布了今年5月软考考试安排&#xff0c;有以下变化&#xff1a; 高级论文单独考试&#xff08;2小时&#xff09;&#xff0c;之前是案例和论文一起考&#xff0c;案例剩下的时间可以给论文用&#xff0c;现在是综合和案例一起考&#xff0c;综合剩下的…

菜鸡学习netty源码(一)——ServerBootStrap启动

1.概述 对于初学者而然,写一个netty本地进行测试的Server端和Client端,我们最先接触到的类就是ServerBootstrap和Bootstrap。这两个类都有一个公共的父类就是AbstractBootstrap. 那既然 ServerBootstrap和Bootstrap都有一个公共的分类,那就证明它们两个肯定有很多公共的职…

Redis集群.md

Redis集群 本章是基于 CentOS7 下的 Redis 集群教程&#xff0c;包括&#xff1a; 单机安装RedisRedis主从Redis分片集群 1.单机安装Redis 首先需要安装Redis所需要的依赖&#xff1a; yum install -y gcc tcl然后将课前资料提供的Redis安装包上传到虚拟机的任意目录&#xf…

PHP8.2-xlswriter 扩展

https://pecl.php.net/package/xlswriter ### 进入/root/ cd ~ ### 下载扩展 wget https://pecl.php.net/get/xlswriter-1.5.5.tgz ### 解压扩展 tar -zxvf xlswriter-1.5.5.tgz ### 进入扩展目录 cd xlswriter-1.5.5 ### 查找对应php版本的phpize find / -name phpi…