当前位置: 首页 > Web前端 > HTML

Vue3.0新APIComposition-api入门指南

时间:2023-03-27 22:49:38 HTML

关于VUE3.0由于vue3.0的语法几乎完全兼容vue2.x的语法,本文主要介绍如何使用composition-api,主要分为以下几点在使用vite体验vue3.0composition-api方面,vue3.0composition-api解决了哪些问题?.composition-api解决什么问题?使用传统的选项配置方式编写组件时,随着业务的复杂度越来越高,代码量会不断增加;因为相关业务的代码需要跟随option的配置写入具体的Compositon-api提供了几个函数reactwatchEffectcomputedreftoRefslifecyclehooksreactiveimport{reactive,computed}from'vue'exportdefault{setup(){conststate=reactive({count:0})functionincrement(){state.count++}return{state,increment}}}Reactive相当于当前的Vue.observable()API,react处理后的函数可以成为响应式数据,类似于optionapiwatchEffectimport{reactive,computed,watchEffect}from'vue'exportdefault{setup(){conststate=reactive({count:0})constdouble=computed(()=>state.count*2)functionincrement(){state.count++}watchEffect(()=>{console.log(double.value)})return{状态,递增}}}Vue检测状态变化的方法,我们可以在渲染时使用它感谢依赖跟踪,当反应状态变化时,视图将自动更新。在DOM中渲染某些东西被认为是一种“副作用”:我们的程序在程序本身(DOM)之外修改状态。要应用和自动重新应用基于响应状态的副作用,我们可以使用watchEffectAPI=>state.count*2)functionincrement(){state.count++}return{state,increment}}}有时我们需要依赖于其他状态的状态——在Vue中这是通过计算属性处理的。直接创建一个计算值,我们可以使用上面的computedAPIref来返回computedproperty计算结果是什么?如果我们猜测computed是如何在内部实现的,我们可能会得出以下结论:如果value是像number这样的原始类型,它与computed内部更新逻辑的连接一旦返回就会丢失。这是因为JavaScript基本类型是按值传递的,而不是按引用传递的。当将值作为属性分配给对象时,也会出现同样的问题。如果在分配给属性或从函数返回时不保持其响应性,则反应值没有多大用处。为了确保我们始终可以读取最新的计算值,我们需要将实际值包装在一个对象中并返回该对象functioncomputed(getter){constref={value:null}watchEffect(()=>{ref.value=getter()})returnref}所以要获取ref和computed的值应该是返回值下面的valueletcount=ref(1)console.log(count.value)//1letdouble=computed(()=>count.value*2)//2值得注意的是,当我们在模板中使用ref或computed时,vue会自动用reactive处理它们,而不会使用count.value或double.value的值,这两个

{{count}}{{double}}
可以为RefstoRefsAPI提供了一个处理reactivevalue的方法作为ref生命周期的hooks方法,与optionapiimport{onBeforeMount,onMounted,reactive,watchEffect}from'vue'exportdefault{setup(){conststate=reactive({count:0})constdouble=computed(()=>state.count*2)函数增量(){state.count++}watchEffect(()=>{console.log(double.value)})onMounted(()=>{document.title='hello'})return{状态,增量}}}最后说一下如何使用compositionapi来组织代码。往往是将一个函数的所有状态和方法封装成一个函数,方便统一管理。如果这样写代码的话,代码的结构大致是这样的{//...}functionuseFavoriteFolder(currentFolderData){//...}functionuseHiddenFolders(){//...}functionuseCreateFolder(openFolder){//...}当我们的任何函数需要被其他组件复用,直接把相关方法抽取出来,然后再引用即可。可以看出,compositionapi主要针对经常写轮子或者框架的开发者,因为比较灵活,可以写出高内聚低耦合的代码。使用vue3的过程不一定要使用compositionapi,如果业务不是很复杂,使用optionapi是没有问题的