vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > vue3组合式api使用

vue3.0组合式api的使用小结

作者:船长在船上

这篇文章主要介绍了vue3.0组合式api的使用小结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

vue2开发缺点和vue3开发优点

1.setup使用

setup(){
  console.log('自动执行')
  const name = '林一'
  const age = 20
  const company = '阿里巴巴'
  
  const btn =  ()=>{
      const res = `我叫${name},今年${age}岁了,在${company}上班`
      console.log(res)
  }
 
  // 计算属性
  // 侦听器
  return {name,btn}
 }

2.生命周期函数

Vue应用程序中有4个主要事件

import { onBeforeMount, ....... } from 'vue'

3.vuex

//安装
npm install vuex@next --save
//引入
import {useStore} from 'vuex'

4.toRef介绍

import {toRef} from 'vue'
//toRef接收两个参数,第一个参数是要操作的对象,第二个参数是对象的某个属性
const obj = {name:'林一'}
toRef(obj,'name')
setup(){
     
    const obj = {name:'林一',age:40}
    //  const res = ref(obj.name)
    const res = toRef(obj,'name')
    const btn = ()=>{
         res.value = '林二'
         console.log(res)
         console.log(obj)
     }
    return {res,btn}
 }

5.ref介绍

import {ref} from 'vue'//组合式api
ref('林一')
setup(){
     const name = ref('林一')
     const age = ref(52)
     const company = ref('阿里巴巴')
    //  对象类型
     const obj = ref({
         taobao:'淘宝',
         tamll:'天猫'
     })
    //  数组类型
    const arr = ref([
        {
            xiami:'林二',
            huabei:'京东'
        }
    ])
     const btn = ()=>{
        //  响应对象类型
        //  name.value = '林三'
        //  obj.value.taobao = '淘宝000'
        //  console.log(obj)
        // 响应数组类型
        arr.value[0].xiami = '京东000'
        console.log(arr)
     }
     return {name,age,company,btn,obj,arr}
 }

6.组件传值

//第一种:进入页面即刻传值(祖孙传值)
const p1 = reactive({name:'林一',age:52})
provide('p',p1)//祖传
 
const res = inject('p')//孙收
 
//第二种:点击传值
<Vue ref="val"/>//引入子组件,使用ref调用该子组件
const val = ref()
const p1 = reactive({name:'林一',age:52})
function btn(){
    val.value.receive(p1)
}

7.shallowRef和shallowReactive

import { shallowReactive,shallowRef } from 'vue'
setup() {
        //shallowReactive:只处理第一层的数据
        const p1 = shallowReactive({
            name:'林一',
            product:{
                taobao:5
            }
        })
        // shallowRef:只处理基本类型数据
        const p2 = shallowRef({
            val:1
        })
        console.log(p2)
        return{...toRefs(p1),p2}
    },

8.watchEffect

import { watchEffect } from 'vue'
setup() {
        const p1 = ref(0)
        const p2 = ref(1)
        const p3 = reactive({
            name:'林一',
            age:50,
            product:{
                wx:14
            }
        })
       const S =  watchEffect(()=>{
            const a = p1.value
            const b = p2.value
            console.log('进入页面我就执行')
        })
        S()//停止监听
        return {p1,p2,p3}
    },

9.watch侦听器

import { watch } from 'vue'
setup() {
        const p1 = ref(0)
        const p2 = ref(1)
        const p3 = reactive({
            name:'林一',
            age:50,
            product:{
                wx:14
            }
        })
        // 一:侦听ref的基本数据
        // watch(p1,(newVal,oldVal)=>{
        //     console.log(newVal,oldVal)
        // },{immediate:true})//{immediate:true}立即侦听
 
        // 二:侦听多个ref响应数据
        // watch([p1,p2],(newVal,oldVal)=>{
        //     console.log(newVal,oldVal)
        // })
 
        // 三:侦听整个reactive定义的数据:只能监听到最新的结果,之前的结果监听不到
        // watch(p3,(newVal,oldVal)=>{
        //     console.log(newVal,oldVal)
        // })
        
        // 四:侦听reactive定义的数据中的某一个值:可以监听到,无论层级有多深
        watch(()=>p3.product.wx,(newVal,oldVal)=>{
            console.log(newVal,oldVal)
        })
        return {p1,p2,p3}
    },

10.computed

import { computed } from 'vue'
setup() {
 
    const mayun = ''
    const huateng = ''
    const res = reactive({linyi,liner})
 
    // 计算年龄总和
    const sum = computed({
        get(){
            return res.linyi + res.liner
        },
        set(val){
            console.log(val)
        }
    })
     
    return {...toRefs(res),sum}
}

11.reactive介绍

import { reactive } from 'vue'
reactive({name:'林一'})
setup(){
    //  const name = reactive({name:'林一'})
    //  const age = reactive({age:20})
    //  const company = reactive({company:'阿里巴巴'})
    // //  深层次响应式
    //  const pro = reactive({
    //      a:'淘宝',
    //      b:'天猫',
    //      c:{
    //          d:'京东',
    //          e:'顺丰'
    //      }
    //  })
     const btn = ()=>{
    //    name.name = '林二'
    //    age.age = 40
    //    pro.c.d = '京东0000'
          res.name = '林三'
     }
    // 共用一个reactive
    const name = '林四'
    const age = 52
    const company = '阿里巴巴'
    const res = reactive({name,age,company})
 
 
     return {res,btn}
 }

12.toRefs介绍

import {toRefs} from 'vue'
toRefs(obj)
setup(){
    const obj = {name:'林一',age:40}
    const refs = reactive(obj)
    // const res = toRefs(refs)
     const btn = ()=>{
        //  res.name.value = '林三'
        //  console.log(res)
         console.log(refs)
         refs.name = '林二'
         console.log(refs)
         console.log(obj)
     }
     return {...toRefs(refs),btn}
 }

到此这篇关于vue3.0组合式api的使用小结的文章就介绍到这了,更多相关vue3组合式api使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文