首页 > 其他分享 >Vue2使用setup、ref、reactive等Vue3的组合式api

Vue2使用setup、ref、reactive等Vue3的组合式api

时间:2023-03-29 12:04:37浏览次数:55  
标签:vue const setup reactive api ref composition

有些同学想在当前项目中体验Vue3组合式api,setup、ref、reactive等,而且一步就可以升级到Vue3,但是vue确实2.x版本,不改变当前版本怎么办呢? vue2.7.0开始自带composition-api可以放心体验,当然不支持 <script setup>语法糖,还需要return,这不影响体验。 那么之前版本呢, 第一步:安装依赖 @vue/composition-api,这里包含了绝大部分api,满足开发,也支持TypeScript语法,可自行选择

npm install @vue/composition-api
// 或
yarn add @vue/composition-api
第二步:安装之后,在main.js中注册
import Vue from 'vue'
import VueCompositionAPI from '@vue/composition-api'
Vue.use(VueCompositionAPI)

第三步:在组件中引入所需的api

// home.js
<script>
    import { ref, computed, reactive, toRefs, onMounted, nextTick, watch, effectWatch } from '@vue/composition-api'
    export default {
        name: 'Home',
        props: {
            name: {
                type: String,
                default: ''
            }
        },
        setup(props, { emit, attrs, refs, root }) {
           /** attrs: Object // => this.$attrs
            emit: f() // => this.$emit
            slots: {} // => this.$slots
            isServer: false // 是否服务端渲染
            listeners: Object // => this.$listeners
            parent: VueComponent // => this.$parent
            refs: Object // => this.$refs
            root: Vue // => main.js 中的全局唯一的 vue 实例,相当this
            ssrContext: {} // => 服务端渲染
            注意:vue3弃用很多,只剩三个 emit、slots、attrs
            **/
            
            const { name } = toRefs(props); // 保持响应式
            const age = ref(18);
            
            onMounted(() => {
                console.log(11)
            })
            
            // 注意监听使用函数式
            watch(() => age.value, (newVal, oldVal) => {
                console.log(newVal)
            })
            
            const addAge = () => {
                age.vaule++
            }
            
            return {
                name,
                age,
                addAge
            }
        },
        components: {
            // 注册组件
        },
        computed: {
            // 导入 mapGetters
        }
    }
</script>

从第三步,我们看到有些不一样

1、setup中 上下文参数 context 

1.1、this 的替代,root 这里面是vue组件的实例,可以获取到很多属性和方法,如 root.$storeroots.$message

1.2、refs 可以获取子组件的对象,从而获取子组件的 数据和方法

 

2、setup 外,可以使用 components computed 正常使用

2.1、components 注册子组件

2.2、computed 属性依赖计算,导入 mapGetters,由于Vuex3.x不支持 useStore 等Api

 

由此导致的问题,解决方案

  1、方法一:简单粗暴、在 setup 中 使用 root , 可以获取 store 中的所有 方法和 属性

  2、方法二:优雅、安装插件  vuex-composition-helpers   npm: https://www.npmjs.com/package/vuex-composition-helpers

npm install vuex-composition-helpers
// 或
yarn add vuex-composition-helpers
<script>
    import { useGetters, useActions } from 'vuex-composition-helpers';
    export default {
        setup(props, context) {
            const { counter } = useGetters(['counter'])

            const { incrementCounter } = useActions(['incrementCounter'])

            return {
              counter,
              incrementCounter
            }
        }
    }
</script>

 

标签:vue,const,setup,reactive,api,ref,composition
From: https://www.cnblogs.com/cp-cookie/p/17268352.html

相关文章

  • [Volo.Abp升级笔记]使用旧版Api规则替换RESTful Api以兼容老程序
    @目录原理分析开始改造更换基类型重写接口替换默认规则在微服务架构中的问题Volo.Abp配置应用层自动生成Controller,增删查改服务(CrudAppService)将会以RESTfulApi的方式......
  • 思考 React Hook 和 Vue 组合式 API
    Vue组合式API优化周期函数Vue2比如mounted周期中有很多获取数据的逻辑都在这里,在updated周期中又有很多更新的逻辑在这里。在老版本的Vue3文档中讲解组合式AP......
  • 33、K8S-配置管理之Secret、DownwardAPI
    1、secret1.1、基础知识1.1.1、Secret简介secretvolume为Pod提供加密的信息,相比于直接将敏感数据配置在Pod的定义或者镜像中,Secret提供了更加安全的机制,将共享的数据......
  • Disqus API 用法 How to get your Disqus API keys
    I’mworkingonimportingmycommentsintotheotherwiseexcellentDisquscommentingsystem,butgettingaholdofyourAPIkeyscanberatherdifficult,soI’l......
  • 今天出门你查老黄历了吗?包括万年历在内的超多免费可用 API 推荐(一)
    写在前面老黄历告诉我,今天宜嫁娶,可是我对象呢?上图是调用老黄历API接口的一个展示,用户可以通过这个接口查询一些日历信息,包括宜忌等,如果你也觉得好玩,不妨往下看看,我给......
  • FastAPI开发运维模板
    main.pyfromtypingimportUnionfromfastapiimportFastAPIfrompydanticimportBaseModelfromtypingimportOptionalimportosapp=FastAPI()classK8s......
  • TAPI协议介绍
    TAPI协议介绍TAPI(电话应用程序接口)是一个标准程序接口,它可以使用户在电脑上通过电话或视频电话与电话另一端的人进行交谈。假设你的电脑上安装了TAPI,并且你安装了正确的应用......
  • vvic根据ID取商品详情 API
    为了进行电商平台的API开发,首先我们需要做下面几件事情。1)开发者注册一个账号2)然后为每个vvic应用注册一个应用程序键(AppKey)。3)下载vvicAPI的SDK并掌握基本的API基础知......
  • 这是一个使用.net 6 基于wpf 、OpencvSharp(opencv的.net wrapper)、ReactiveUI等开发
    这是一个使用.net6基于wpf、OpencvSharp(opencv的.netwrapper)、ReactiveUI等开发的自用工具,主要用来做ReactiveUI与OpencvSharp学习过程中的尝试以及opencv算子参数的......
  • API开发的版本控制技巧
    《API开发的版本控制技巧》作者:chszs在设计和构建API时,API的版本控制是非常重要的。必须确保新API对于现有的API不会造成破坏。首先,也是最重要的,可以把版本号放入API的URL中......