Vue3|Vue3 composition API实现逻辑复用的方法
Composition API实现逻辑复用的步骤:
- 抽离逻辑代码到一个函数,这个函数命令约定为useXXX格式(这点同React Hooks)
- 在setup中引用函数useXXX
第一种,直接使用ref定义的useMousePosition:
这种方式,导出和导入都可以随意解构
// useMousePosition.jsimport { ref, onMounted, onUnmounted } from 'vue'// 1. 定义一个函数,抽离逻辑,命名使用 useXXXfunction useMousePosition() {// 使用ref定义const x = ref(0)const y = ref(0)function update(e) {console.log(x.value, y.value); x.value = https://www.it610.com/article/e.pageXy.value = e.pageY}onMounted(() => {console.log('开始监听鼠标划动事件'); window.addEventListener('mousemove', update)})onUnmounted(() => {console.log('解除监听鼠标划动事件'); window.removeEventListener('mousemove', update)})return {x, y}} // 导出这个函数export default useMousePosition
mouse position: {{x}}, {{y}}
第二种,使用reactive定义鼠标坐标对象
这种导出的方式,在组件中导入时是不能解构的
import {onMounted, onUnmounted, reactive } from 'vue'export function useMousePosition2() {// 使用reactive定义const mouse = reactive({x: 0, y: 0})function update(e) {mouse.x = e.pageXmouse.y = e.pageY}onMounted(() => {console.log('开始监听鼠标划动事件'); window.addEventListener('mousemove', update)})onUnmounted(() => {console.log('解除监听鼠标划动事件'); window.removeEventListener('mousemove', update)})return {mouse}}mouse position2: {{mouse.x}}, {{mouse.y}}
第三种,使用toRefs
使用这种方式,可以将reactive对象,解构为ref对象
export function useMousePosition3() {// 使用reactive定义const mouse = reactive({x: 0, y: 0})function update(e) {mouse.x = e.pageXmouse.y = e.pageY}onMounted(() => {console.log('开始监听鼠标划动事件'); window.addEventListener('mousemove', update)})onUnmounted(() => {console.log('解除监听鼠标划动事件'); window.removeEventListener('mousemove', update)})// 这里,使用toRefs解构成ref对象return toRefs(mouse)}mouse position: {{x}}, {{y}}
三种方式都可以实现,但是我们一般使用时,都会返回ref对象,所以比较建议使用第一种和第三种,尽量不使用第二种
【Vue3|Vue3 composition API实现逻辑复用的方法】到此这篇关于Vue3 composition API实现逻辑复用的方法的文章就介绍到这了,更多相关Vue3 composition API逻辑复用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 2020-04-07vue中Axios的封装和API接口的管理
- 【译】Rails|【译】Rails 5.0正式发布(Action Cable,API模式等)
- ElasticSearch6.6.0强大的JAVA|ElasticSearch6.6.0强大的JAVA API详解
- 前端开发|Vue2.x API 学习
- 简易有效Api接口防攻击策略
- 如何在Kubernetes|如何在Kubernetes 里添加自定义的 API 对象(一)
- fastapi教程翻译(一)(了解FastAPI结构)
- BLAS|BLAS API 中文文档(2)(待续)
- 1.前端引入jeDate日期控件
- 基础3-API-值传递