介绍:

在vue中,为了实现项目可维护性与复用的功能,会将代码单独分离出一个功能组件,但是vue2和vue3分离方式并不相同

vue2:

  • vue2不支持逻辑的抽离,如果想实现抽离必须要将所有html代码与逻辑代码全部抽离,会增加父子组件的通信成本,如果数据过多维护起来会比较头疼

vue3:

  • vue3支持逻辑的抽离,可以更好的增加项目的可维护性,由于抽离的只是逻辑代码 ,所以没有增加通信成本,就算数据再多,维护起来也非常方便
  • 而且vue3中的 setup 这个函数里面不应该出现大量的逻辑代码,不仅看起来不优美,而且维护起来也有些不方便
  • 在vue3中,一般会将抽离的逻辑代码放进service的文件夹中,然后在父组件中导入使用

未分离写法:

  <ul class="goods-list">// 直接使用即可<li v-for="item in newData" :key="item.id"><RouterLink to="/"><img :src="item.picture" alt="" /><p class="name">{{ item.title }}</p><p class="desc">{{ item.alt }}</p></RouterLink></li></ul>
......// 导入 api 接口
import { findNew } from '@/api/home'
import { ref } from 'vue'
export default {setup () {// 获取的数据const newData = ref([])async function loadNewData () {const res = await findNew()newData.value = res.data.result}loadNewData()// 不要忘记 returnreturn {newData}

分离写法:

功能组件:src/views/Home/service/useHot.js

// 功能组件
import { ref } from 'vue'
// 导入 api 接口
import { findHot } from '@/api/home'
export function useHot () {const hotData = ref([])async function loadhotData () {const res = await findHot()hotData.value = res.data.result}loadhotData()// 注意要 returnreturn {hotData}
}

父组件:src/views/Home/index.vue

  <ul class="goods-list">// 直接使用即可<li v-for="item in hotData" :key="item.id"><RouterLink to="/"><img :src="item.picture" alt="" /><p class="name">{{ item.title }}</p><p class="desc">{{ item.alt }}</p></RouterLink></li></ul>
......// 先导入
import { useHot } from './service/useHot'
export default {setup () {// 固定写法const { hotData } = useHot()// 记得 returnreturn {hotData}}

vue3的逻辑复用抽离相关推荐

  1. onmounted vue3_基于项目时间阐述vue3.0新型状态管理和逻辑复用方式

    作者:Mingle 转发链接:https://mp.weixin.qq.com/s/iOq-eeyToDXJ6lvwnC12DQ 前言 背景:2019年2月6号,React 发布 「16.8.0」 版 ...

  2. 感想3-对于业务逻辑复用、模板复用的一些思考(未完)

    内容概览: 业务逻辑复用的目的 基于现有场景,如何抽象出初步可复用逻辑 复用业务逻辑会不会产生过度设计的问题 业务逻辑复用的目的 我对于业务逻辑复用的理解是忽略实际业务内容,从交互流程.交互逻辑的角度 ...

  3. 研究partner determination的逻辑能否抽出来,以API的形式被我们Odata service implementation code里调用?

    研究partner determination的逻辑能否抽出来,以API的形式被我们Odata service implementation code里调用? 研究partner determinat ...

  4. 利用React 自定义Hooks实现业务逻辑复用实例

    目录 简介 适用读者 请求数据的例子 需求 定义 States 加载 Posts 加载 Todos 展示数据 问题 用自定义 Hooks 改造 useRequest 加载 Posts 和 Todos ...

  5. vue核心面试题:Vue中相同逻辑如何抽离?

    一.mixin 使用vue中的Vue.mixin,给组件每个生命周期.函数等混入一些公共的逻辑,另外混入对象的钩子将在组件自身钩子之前调用..mixin可以放在全局使用,也可以放在组件中使用. vue ...

  6. Vue3 购物车逻辑

    添加购物车了逻辑 state: {//购物车列表的数据shopcar: []}, mutations: {add(state, value) {// 声明一个变量flag=false 如果是这个变量的 ...

  7. 前端学习(2651):逻辑复用方式

  8. Vue3比Vue2有什么优势/区别

    优势 性能更好 体积更小 更好的ts支持 更好的代码组织 更好的逻辑抽离 更多新功能 Vue3生命周期 Options API 生命周期 Composition API 生命周期 Options AP ...

  9. Sciter 结合 PReact 实现组件公共逻辑抽离

    Sciter 结合 PReact 实现组件公共逻辑抽离 下面例子是获取鼠标移动位置,将这部分逻辑进行抽离 一.使用高阶组件抽离公共逻辑 import { Component } from './pre ...

  10. 简明扼要聊聊 Vue3.0 的 Composition API 是啥东东!

    对于没太了解 Vue3.0 的同学,在看到 Composition API 时,除了看起来会有一个"高大上"的感觉,可能更多的是有点懵逼,心中不免泛起一堆疑惑,这到底是何方神圣?干 ...

最新文章

  1. Java中的BigDecimal类你真的了解吗?
  2. grunt使用watch和livereload的Gruntfile.js的配置
  3. Lingoes 2.8 手动去广告步骤
  4. div禁用,不可点击
  5. php 版本排序,四种常见排序算法--PHP版本
  6. python列表大于60_Python使用filter如何对给定列表中的数字进行过滤,保留大于等于60的数字?...
  7. 手把手教你实现机器学习SVM算法
  8. uwsgi模式_uWSGI / Pylons的开发模式(重新加载新代码)
  9. 求解动力学模型的平衡点【matlab工具集_01】
  10. 补点C#基础_022_json校验和json在线编辑器-bejson
  11. 红宝石、蓝宝石的主成份是什么?
  12. 中国人的数学为什么好,为什么不好
  13. 个人收款码不得用于经营收款
  14. sdio wifi 移植
  15. 51假期读书笔记(上)——流畅的python
  16. 2022年值得关注的5个区块链项目 数字藏品平台开发搭建
  17. 非常好用的重复文件清理软件Tidy Up Mac
  18. 小区物业信息管理系统c语言,小区信息管理系统.doc
  19. Pr:导出设置之效果
  20. pa...............

热门文章

  1. linux ntfs格式u盘实现与挂载
  2. length php,length与size()使用对比
  3. Detect-and-Track: Efficient Pose Estimation in Videos(检测和追踪:视频中有效的姿态评估)论文解读
  4. 抢跑俞敏洪,教培人“玩命”直播
  5. 泰康和百度智能云为何相互需要?
  6. 运筹说 第12期 | 佳片推荐之“心灵捕手”
  7. 旷视研究院「技术圆桌派-上海专场 」报名启动!
  8. 2015062602 - 星际迷航.红杉书评
  9. idea gradle GC overhead limit exceeded
  10. Error occurred when evaluating apply