Vue3【十九】自定义Hooks钩子 将数据和方法分组

Vue3【十九】自定义Hooks钩子 将数据和方法分组

Vue3【十九】自定义Hooks钩子 将数据和方法分组
每个分组都可以放置 各种生命周期钩子
分组和可以使用计算属性等

案例截图

Vue3【十九】自定义Hooks钩子 将数据和方法分组

目录结构

在这里插入图片描述

代码

person.vue

<template>
    <div class="person">
        <h2>Vue3自定义钩子Hooks</h2>
        <h4> 求和结果: {{ sum }} ×10 = {{ bigSum }}</h4>
        <button @click="add">  点击 sum+1 </button>

        <hr>
        <button @click="getImg">增加一张图片</button>
        <br>
        <img v-for="(img,index) in imgLists" :src="img" :key="index" alt="" width="200px">
    </div>
</template>

<script lang="ts" setup namwe="Person">
import useImg from '@/hooks/useImg';
import useSum from '@/hooks/useSum';

const { imgLists, getImg } = useImg();
const { sum, add, bigSum } = useSum();


</script>

<style scoped>
.person {
    background-color: #ff9e4f;
    box-shadow: 0 0 10px;
    border-radius: 30px;
    padding: 30px;
}

button {
    margin: 0 10px;
    padding: 0 5px;
    box-shadow: 0 0 5px;
    ;
}
</style>

app.vue

<template>
    <div class="app">
        <h1>你好世界! 我是App根组件</h1>
        <Person  />
    </div>
</template>

<script lang="ts" setup name="App">
import { ref } from 'vue';
import Person from './components/Person.vue'



</script>

<style scoped>
.app {
    background-color: #4fffbb;
    box-shadow: 0 0 10px;
    border-radius: 10px;
    padding: 20px;
}
</style>

useImg.ts

import { onMounted, reactive } from 'vue';
import axios from 'axios'; // npm install axios

export default () => {
    // 数据
    let imgLists = reactive([]);

    // 方法
    async function getImg() {
        try {
            let res = await axios.get('https://dog.ceo/api/breeds/image/random')
            console.log(res.data)
            imgLists.push(res.data.message)
        } catch (error) {
            alert(error)
        }
    }
    // 钩子 //页面一打开就来一张图片
    onMounted(() => {
        getImg()
    })
    // 提供给外部
    return {
        imgLists,
        getImg
    }
}

useSum.ts

import { computed, onMounted, ref } from 'vue';

export default function () {
    // 数据
    let sum = ref(0);
    let bigSum = computed(() => {
        return sum.value * 10;
    });

    // 方法
    let add = () => {
        sum.value++;
    }

    //钩子 页面加载时候加100
    onMounted(() => {
        add();
    })

    // 提供给外部
    return {
        sum,
        add,
        bigSum
    }
}



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

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

相关文章

C++中的结构体——结构体指针

作用&#xff1a;通过指针访问结构体中的成员 利用操作符 -> 可以通过结构体指针访问结构体属性 示例 运行结果

『大模型笔记』Anthropic团队:什么是大模型的可解释性!

Anthropic团队:什么是大模型的可解释性! 文章目录 一. Anthropic团队:什么是大模型的可解释性!二. 参考文献我的小红书中英文双语视频:Anthropic团队:什么是大模型的可解释性!一. Anthropic团队:什么是大模型的可解释性! 我在Anthropic的可解释性团队工作。可解释性是…

诊所管理系统软件的特征有哪些

在医疗行业快速迈进数字化时代的背景下&#xff0c;诊所管理系统的出现&#xff0c;为诊所的管理和服务模式带来重大变革&#xff0c;不仅极大地提升了工作效率&#xff0c;还显著增强了患者的就医体验&#xff0c;为医疗体系的全面升级注入了新的活力。 首先&#xff0c;来和大…

Vue23-过滤器

一、效果图 二、好用的时间戳三方工具 该三方工具比较大 推荐使用 dayjs的用法&#xff1a; 三、过滤器的使用 3-1、计算属性实现 3-2、methods函数实现 3-3、过滤器filters属性实现 过滤器的本质就是函数&#xff01;&#xff01;&#xff01; 1、过滤器-未传参 默认将管道…

售后服务体系认证的优势与意义

在现代商业环境中&#xff0c;售后服务已经成为企业与客户建立长期关系的重要桥梁。售后服务体系认证不仅是对企业服务能力的认可&#xff0c;更是提升企业竞争力的关键手段。本文将详细阐述售后服务体系认证的优势与意义&#xff0c;探讨其对企业和客户的积极影响。 优质的售后…

init函数

【1】init函数&#xff1a;初始化函数&#xff0c;可以用来进行一些初始化的操作 每一个源文件都可以包含一个init函数&#xff0c;该函数会在main函数执行前&#xff0c;被Go运行框架调用。 【2】全局变量定义&#xff0c;init函数&#xff0c;main函数的执行流程&#xff1f…

解决While loop问题 - Python

当我们在使用 while 循环时&#xff0c;需要确保循环的终止条件最终会被满足&#xff0c;否则循环将会无限执行下去。通常情况下&#xff0c;我们可以在循环内部修改循环控制变量&#xff0c;使得终止条件得以满足。 1、问题背景 一位开发者在使用 Python 开发一个基于文本的游…

【Linux】Linux基础文件与目录管理:成为Linux大师的入门必修课

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 引言一、Linux文件与目录的基本概念二、常用文件与目录管理命令1. ls&#xff1a;列出目录内容2. cd&#xff1a;更改当前工作目录3. pwd&#xff1a;显示当前工作目录4. mkdir和rmdir&#xff1a;创建和删除目录5. touch&a…

西门子学习笔记13 - mtqq库项目

这是我整合过后的mqtt库的下载地址 https://download.csdn.net/download/qq_61916672/89423266https://download.csdn.net/download/qq_61916672/89423266

几行代码实现多对多网格视图

当我们希望实现如下图所示效果如何实现呢: 我们可以使用Vis.js,vis.js Vis Network Examples Vis.js 是一个支持多种网络可视化的库,使用简单,功能强大。 以下是具体实现例子 不带箭头的: <!DOCTYPE html> <html> <head><meta charset="utf…

python3的基本语法说明三

一. 简介 前面几篇文章简单学习了 python3的基本语法&#xff0c;文章如下&#xff1a; python3的基本语法说明一-CSDN博客 python3的基本语法说明二-CSDN博客 本文继续学习 python3的基本语法。 二. python3 的基本语法 1. 等待用户输入 执行下面的程序在按回车键后就会…

stable diffusion中的negative prompt是如何工作的

https://stable-diffusion-art.com/how-negative-prompt-work/https://stable-diffusion-art.com/how-negative-prompt-work/https://zhuanlan.zhihu.com/p/644879268

java+vue3+el-tree实现树形结构操作

基于springboot vue3 elementPlus实现树形结构数据的添加、删除和页面展示 效果如下 代码如下&#xff0c;业务部分可以自行修改 java后台代码 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.daztk.mes.common.annotation.LogOperation…

c#引用dll报错cs8370功能“本地函数特性“在c#7.3中不可用

cs8370:功能"本地函数特性"在c#7.3中不可用 解决方法&#xff1a; 代码放在form类里面

【qt】视口和窗口坐标

视口和窗口坐标 一.视口和窗口坐标的原理二.视口和窗口坐标的好处三.演示好处四.总结 一.视口和窗口坐标的原理 在绘图事件中进行绘图 void Widget::paintEvent(QPaintEvent *event) {QPainter painter(this);QRect rect(200,0,200,200);painter.drawRect(rect);//设置视口的…

和数集团最新人事任命通知

根据集团战略发展规划&#xff0c;为进一步拓展业务领域&#xff0c;优化组织架构&#xff0c;完善客户服务&#xff0c;经公司研究决定&#xff0c;现对以下人事进行任命&#xff1a; 任命徐敬东为和数研究院院长 任命李晓峰为常务副总经理 任命陈善明为市场总监 任命窦晓…

什么是感音神经性耳聋?

什么是感音神经性耳聋&#xff1f; 感音神经性耳聋&#xff0c;是指耳蜗内的神经细胞以及耳蜗后的神经纤维出现病变所引起的听力下降。由于耳蜗内的毛细胞失去其功能&#xff0c;无法将声音转化为电能&#xff0c;称为感音性聋。耳蜗后的神经纤维的功能出现障碍&#xff0c;无…

RabbitMQ-Stream(高级详解)

文章目录 什么是流何时使用 RabbitMQ Stream&#xff1f;在 RabbitMQ 中使用流的其他方式基本使用Offset参数chunk Stream 插件服务端消息偏移量追踪示例 示例应用程序RabbitMQ 流 Java API概述环境创建具有所有默认值的环境使用 URI 创建环境创建具有多个 URI 的环境 启用 TLS…

青否数字人直播源码代理端后台操作步骤!

青否数字人直播源码代理端后台&#xff0c;我们将详细介绍一下数字人的代理端后台的详细操作步骤&#xff01; 1.代理端入口 2.代理后台预览 基本设置&#xff0c;账号管理&#xff0c;资金管理&#xff0c;克隆端 。 2.1基本设置 设置一些账号的基本信息包括名称&#xff0c;l…

时尚解决方案来袭:几分钟即可生成高清商拍大片

在时尚行业&#xff0c;视觉展示的重要性不可小觑。商品图片不仅代表品牌的风格调性&#xff0c;而且直接影响消费者的购买行为。可以说&#xff0c;视觉营销在服装行业中的地位至关重要。 尽管如此&#xff0c;视觉营销的传统产出渠道——商业摄影&#xff0c;因其高成本、复杂…