【Vue3+Ts project】认识 @vueuse/core 库

这篇具有很好参考价值的文章主要介绍了【Vue3+Ts project】认识 @vueuse/core 库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目标:

根据屏幕宽度改变 实现动态获取盒子的宽度
 

目录

目标:

一、javascript实现

二、@vueuse/core 库实现


一、javascript实现

1.首先 window.innerWidth 获取当前屏幕宽度,然后将 盒子宽度 除 375 乘 当前屏幕宽度

150 / 375 * window.innerWidth

2.将获取的动态盒子宽度赋值给 一个变量

import { ref } from 'vue';

const width = ref(0)
width.value = 150 / 375 * window.innerWidth

3.将获取盒子逻辑代码封装函数 并在进入页面后组件加载结束后执行,然后将宽赋值给swipe标签 :width="width"

import { onMounted, ref } from 'vue';

const width = ref(0)

const SwipeWidth = () => width.value = 150 / 375 * window.innerWidth
onMounted(() => {
    SwipeWidth()
})

<template>
<van-swipe :loop="false" :show-indicators="false" 
:width="width">
    <van-swipe-item v-for="item in 5" :key="item">
        <DoctorCard />
    </van-swipe-item>
</van-swipe>
</template>

这里在进入页面 或 刷新页面 后是实现了。但是在开发过程中 拉动屏幕宽度是没有改变的

【Vue3+Ts project】认识 @vueuse/core 库

4.使用 resize事件 当屏幕改变时就执行 封装逻辑代码函数,最后在组件销毁 也就是组件被DOM 移除时清除

<script setup lang="ts">
import { onMounted, ref } from 'vue';

const width = ref(0)

const SwipeWidth = () => width.value = 150 / 375 * window.innerWidth
onMounted(() => {
    SwipeWidth()

    window.addEventListener('resize', () => {
        console.log(window.innerWidth);
    })
})

onUnmounted(()=>{
      window.addEventListener('resize', SwipeWidth)
})

</script>


<template>
<van-swipe :loop="false" :show-indicators="false" 
:width="width">
    <van-swipe-item v-for="item in 5" :key="item">
        <DoctorCard />
    </van-swipe-item>
</van-swipe>
</template>

代码

<script setup lang="ts">
import { onMounted, ref } from 'vue';

const width = ref(0)

const SwipeWidth = () => width.value = 150 / 375 * window.innerWidth
onMounted(() => {
    SwipeWidth()

    window.addEventListener('resize', () => {
        console.log(window.innerWidth);
    })
})

onUnmounted(()=>{
      window.addEventListener('resize', SwipeWidth)
})

</script>


<template>
<van-swipe :loop="false" :show-indicators="false" 
:width="width">
    <van-swipe-item v-for="item in 5" :key="item">
        <DoctorCard />
    </van-swipe-item>
</van-swipe>
</template>

二、@vueuse/core 库实现

1.下载 @vueuse/core库到开发者依赖

npm install -D @vueuse/core

yarn add @vueuse/core

pnpm add @vueuse/core

2.引入 useWidthSize 引从他对象内拿到 width,然后swipe标签使用

<script setup lang="ts">
import { useWindowSize } from '@vueuse/core'

const { width } = useWindowSize()
</script>

<template>
<van-swipe :loop="false" :show-indicators="false" 
:width="width">
    <van-swipe-item v-for="item in 5" :key="item">
        <DoctorCard />
    </van-swipe-item>
</van-swipe>
</template>

3.最后也是非常重要的 ,拿到当前屏幕宽度,这里当前屏幕宽度就是 useWidthSize 解构出来的 width ,然后 盒子宽度 除 375 乘 当前屏幕宽度,完成

<script setup lang="ts">
import { useWindowSize } from '@vueuse/core'

const { width } = useWindowSize()
</script>

<template>
<van-swipe :loop="false" :show-indicators="false" 
:width=" 150 / 375 * width">
    <van-swipe-item v-for="item in 5" :key="item">
        <DoctorCard />
    </van-swipe-item>
</van-swipe>
</template>


 文章来源地址https://www.toymoban.com/news/detail-492128.html

到了这里,关于【Vue3+Ts project】认识 @vueuse/core 库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3中的吸顶导航交互实现 | VueUse插件

    目的:浏览器上下滚动时,若距离顶部的滚动距离大于78px,吸顶导航显示,小于78px隐藏。使 用vueuse插件中的 useScroll方法 ​​​​​​​ 和 动态类名控制 进行实现 项目中导入,解构出 useScroll方法的其他参数: 参考:useScroll | VueUse中文文档 (vueusejs.com)

    2024年02月09日
    浏览(33)
  • 【Vue3】利用VueUse实现useInfiniteScroll虚拟滚动操作

    我们先来看一下效果展示 1、infiniteScroll无限滚动是一种在网页或应用程序中实现动态加载内容的技术,它允许用户在滚动页面时无需点击分页或刷新按钮自动加载更多内容,从而提供更流畅的用户体验,传统的分页加载需要用户点击下一页或下载更多的按钮来获取更多内容,

    2024年02月01日
    浏览(45)
  • VueUse 是怎么封装Vue3 Provide/Inject 的?

    Provide 和 Inject 可以解决 Prop 逐级透传问题。注入值类型不会使注入保持响应性,但注入一个响应式对象,仍然有响应式的效果。 Provide 的问题是无法追踪数据的来源,在任意层级都能访问导致数据追踪比较困难,不知道是哪一个层级声明了这个或者不知道哪一层级或若干个层

    2024年02月03日
    浏览(30)
  • Vue3最佳实践 第六章 Pinia,Vuex与axios,VueUse 4(axios)

      axios 是一个基于 Promise 的 HTTP 客户端,不仅可以与 vue.js 一起使用,还可以与其他前端框架以及后端 Node.js 一起使用。当你想从包括后端服务器在内的外部服务获取数据时,可以使用axios 中的方法很方便的获得数据内容。在本文档中,我们将介绍如何在 vue.js 版本 3 的环境

    2024年02月07日
    浏览(26)
  • webpack esbuild tree-shaking @vueuse/core失败替换方案

    在webpack中构建,使用esbuild压缩代码 ,@vue-use/core不能被tree shaking webpack@5.88.0 webpack-cli@5.1.4 esbuild@0.18.10 esbuild-loader@3.0.1 @swc/core@1.3.62 swc-loader@0.2.3 @vueuse/core@9.12.0 使用webpack-bundle-analyzer 执行npm run build 后发现构建产物中@vueuse/core 占用200K, 实际上我仅使用了 vueuse 中的 useInfinit

    2024年02月12日
    浏览(30)
  • vue3+ts:shims-vue.d.ts

    一、本文引子 uniapp(3.8.4.20230531)+ vue3 + ts + vite 项目 在搭建这个base项目的时候出现红素波浪线如图,代码运行正常,但是看起来很难受,于是各种查找,能找到的资料很少,可能和我提问不够准确也有关系,有人说删除tsconfig.js就可以了,我测试了,结果真的可以,但是这

    2024年02月10日
    浏览(28)
  • vue3 + ts

    在 vue3.2 中,我们只需在script标签中添加setup。就可以做到,组件只需引入不用注册,属性和方法也不用 return 才能于 template 中使用,也不用写setup函数,也不用写export default ,甚至是自定义指令也可以在我们的template中自动获得。 一、模板语法 1.使用 JavaScript 表达式 我们仅在

    2024年02月07日
    浏览(31)
  • vue3 vite ts引入vue文件报错 ts(2307)

    vue3 vite ts 生成的项目模板,在ts文件中引入vue文件报错 ts(2307),只是ts报错,并不影响项目运行。 官方文档有说明:http://vue.dragonlm.com/guide/typescript/overview.html#ide-support 解决方法是安装插件,之后即可正常解析路径,并可以跳转到对应文件。 TypeScript Vue Plugin (Volar)

    2024年02月16日
    浏览(36)
  • csdn新星计划vue3+ts+antd赛道——利用inscode搭建vue3(ts)+antd前端模板

    大家好,我是yma16,本文分享利用inscode搭建vue3(ts)+antd前端模板。 2023 新星计划 vue(ts)+antd赛道报名入口:https://bbs.csdn.net/topics/616574177 搭建vue3+ts+antd的指引:认识vite_vue3 初始化项目到打包 InsCode 是一个一站式的软件开发服务平台,从开发-部署-运维-运营,都可以在 InsCode 轻松

    2024年02月16日
    浏览(33)
  • Vue3动态路由(Vite+Vue3+TS+Mock)

    Vue通过路由进行页面管理,不同的路由绑定到不同的页面。一般来说,前端直接写好的路由为静态路由,在不修改代码的情况下,路由表是不会改变的。对于不需要动态改变路由表的网站,静态路由就已经足够了,但是当页面需要与权限进行绑定时,不同用户允许浏览的页面

    2024年02月02日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包