第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Vue Composition API體驗(yàn)

標(biāo)簽:
Vue.js

最近,Vue官方发布了 Composition API RFC。有关于Vue3.0 Function Base组件相关讨论正如火如荼。虽然Vue3.0还未发布,但是 Vue官方发布了关于 Composition API的官方插件,使广大用户可以在Vue2.x中享受 Function Base 带来的新体验。下面我会在一个简单的demo中介绍Composition API使用方法。

安装

yarn add @vue/compostion-api

等待composition-api包安装完成后,我们在项目入口文件中加入Composition API。

import Vue from "vue"
import CompositionApi from "@vue/compostion-apai"
Vue.use(CompositionApi)

setup

按照官方给出的说法,setup函数是一个新的Vue组件选项,是用于在组件中使用Composition API的入口。

setup函数在组件初始化了props之后,created之前调用,这时候我们才能通过setup来传递props。

ref

ref是CompositionAPI引入的新概念。作用是使访问响应式的变量不依赖于实例的this。如果使用了ref,我们访问响应式的变量时使用.value而不是从this中获取。

import {ref} from "@vue/compostion-apai"
export default {
    setup() {
        const count = ref(0)//count初始值为0,会相应变化
        count.value = 10;//设置count值为10,使用.value形式
        return {
            count//必须将count return 回去
        }
    }
}

生命周期函数

可以使用导入的onXXX的形式注册生命周期函数,举个例子:

import {onCreated,onMounted} from "@vue/compostion-apai"
export default {
    setup() {
        onCreated(()=>{
            console.log('created被触发')    
        })
        onMounted(()=>{
            console.log('mounted被触发')
        })
        ///...其他类似
    }
}

methods

在Composition API中,我们使用普通的函数定义方法,这样可以最大程度的增加复用性。例如:

<template>
<button @click="add">click me!</button>
</template>
<script>
export default {
    setup() {
        function add() {
            console.log('add被触发')
        }
        return {
            add//必须将函数return
        }
    }
}
</script>

props

定义props和原来的方式一样,props会通过参数的形式传入到setup函数中:

export default {
    props:{
        name:String
    },
    setup(props) {
        console.log(props.name)
    }
}

computed

计算属性可以使用Composition API提供的computed函数进行定义:

import {computed,ref} from "@vue/compostion-apai"
export default {
    setup() {
        const a = ref(0)
        const b = ref(1);
        const total = computed(()=>a.value+b.value)
        return {
            a,
            b,
            totla
        }
    }
}

这样我们就定义号了一个计算属性totaltotal.value = a.value + b.value

watch

在组件中添加watch监听我们可以采用Compostion API提供的watch函数实现:

import {watch,ref} from "@vue/compostion-apai"
export default {
    setup() {
        const count = ref(100);
        watch(()=>count.vlaue,()=>{
            console.log('count数值发生变化了')
        })
        const.value = 200;
        return {
            count
        }
    }
}

获取Vue组件实例或者dom节点

在Composition API中使用ref特性获取组件实例或者dom节点,举个例子说明:

<template>
<div>
    <hello-world ref="helloWold"></hello-world>
    <button ref="btn"></button>
</div>
</template>
import {ref} from "@vue/composition-api"
export default {
    setup() {
        const helloWorld = ref(null);//helloworld组件实例
        const btn = ref(null);//button dom节点对象
        return {
            btn,
            helloWorld
        }
    }
}

综合例子

<template>
    <div>
        <button @click="increment" ref="btn">{{titleCount}}</button>
    </div>
</template>

<script>

import {onMounted,computed,ref,watch} from "@vue/composition-api"
export default {
  props:{
    prefix:String
  },
  setup(props) {
    const btn = ref(null);
    const count = ref(0);
    const title = ref(`${props.prefix},vue composition api`);
    const titleCount = computed(()=>title.value +':'+ count.value)
    onMounted(()=>{
      alert('mounted')
    })
    watch(()=>count.value,()=>alert('count改变了:'+count.value))
    function increment() {
      // eslint-disable-next-line no-console
      count.value++;
      // eslint-disable-next-line no-console
      console.log(btn.value);
    }

    return {
      btn,
      increment,
      title,
      count,
      titleCount
    }
  }
}
</script>

总结

经过以上实践,总结Composition API以下特点:

  1. 使用简洁,方便,代码量小
  2. 函数特性,复用性强
  3. 容易做类型推导,方便IDE做出语法提示
點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 1
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消