首页 > 其他分享 >vue3中的自定义hooks的使用,以及和mixin的区别

vue3中的自定义hooks的使用,以及和mixin的区别

时间:2024-10-17 18:44:07浏览次数:1  
标签:const 自定义 width hooks hook mixin vue3 data

1、理解hooks的概念:hook本质是一个函数,将setup函数中使用的Composition API进行封装,类似于Vue2中的mixin

2、mixin相比hook的缺点 :

(1)变量来源不明确(隐式传入),不利于阅读,使代码变得难以维护

(2)同名属性、同名方法无法融合,可能会导致冲突

3、

例一:

第一步:在src/hooks/index.js文件:

import { reactive } from "vue";

export function useVwSize() { //use开头创建hook

  const data = reactive({

    width: 0,

    height:0

  })

  const getViewportSize = () => {

    data.width = document.body.clientWidth;

    data.height = document.body.clientHeight;

  }

  return {

    data,getViewportSize  //return出共用变量和方法

  }

}

第二步:index.vue 使用hooks

<script setup lang="ts">

import { useVwSize } from "@/hooks"; //引入hook

const { data, getViewportSize } = useVwSize(); //调用hoook

</script>

<template>

  <button @click="getViewportSize">获取窗口大小</button> //直接使用hook返回的函数

  <div>

    <div>宽度 : {{ data.width }}</div> //直接使用hook返回的变量

    <div>宽度 : {{ data.height }}</div>

  </div>

</template>

标签:const,自定义,width,hooks,hook,mixin,vue3,data
From: https://www.cnblogs.com/panzai/p/18472855

相关文章

  • 关于微信分享自定义标题,说明,图标基于PHP的功能实现
    1.首先先从微信公众平台获取AppId和AppSecret。不会的自行查询。比如要访问的服务器目录是www.xxxx.com。那么在这个目录下可以创建一个目录WeChat,在WeChat下分别创建文件access_token.json、config.php、jsapi_ticket.json、weChatShare.js。2.access_token.json和jsapi_ticke......
  • UI范式:创建自定义组件
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(MaoistLearning)➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ )➤GitHub地址:https://github.com/strengthen➤原文地址:https://www.cnblogs.com/strengthen/p/......
  • UI范式:页面和自定义组件生命周期
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(MaoistLearning)➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ )➤GitHub地址:https://github.com/strengthen➤原文地址:https://www.cnblogs.com/strengthen/p/......
  • 【Vue3】将 Element Plus 引入 Vue3 项目
    前言在Vue3项目中使用ElementPlus可以为项目提供丰富的UI组件和交互体验。下面将介绍如何将ElementPlus引入Vue3项目中。步骤安装ElementPlus首先需要通过npm、yarn或pnpm安装ElementPlus包。可以选择其中一种方式进行安装。#NPM$npminstall......
  • 新建next.js项目,customize the default import alias是否要自定义默认导入别名(@/*)的选
    使用命令npxcreate-next-app@latest新建项目时,会自定义一些选项,如下图:其中自定义导入别名的选项,选择Yes或No有何区别?Wouldyouliketocustomizethedefaultimportalias(@/*)?...No/Yes一、选择"Yes"jsconfig.js文件的内容是:{"compilerOptions":{......
  • el-table自定义表头新
    <el-table-columnprop="address"label="333333"min-width="180":show-overflow-tooltip="true"><templateslot......
  • Vue3 生命周期钩子
    1、setup():开始创建组件之前,在beforeCreate和created之前执行,创建的是data和method2、onBeforeMount():组件挂载到节点上之前执行的函数;3、onMounted():组件挂载完成后执行的函数;4、onBeforeUpdate():组件更新之前执行的函数;5、onUpdated():组件更新完成之后......
  • Vue3中 watch、watchEffect 详解
    Vue3中watch、watchEffect详解   1.watch的使用 监听ref定义的响应式数据 <template><div><div>值:{{count}}</div><button@click="add">改变值</button></div></template><script>import{r......
  • C#的自定义对话框和提示窗体 - 开源研究系列文章
          上次的应用因为需要用到对话框和提示窗体,然后系统自带的MessageBox界面个人又看不上,所以就想自己编写一个自定义的窗体,于是有了本文,具体的已经应用到笔者其它的应用里了。 1、项目目录;  2、源码介绍;1)实现;        2)......
  • CSDN-自定义公众号卡片
    ......