首页 > 其他分享 >Vue(14)——组合式API①

Vue(14)——组合式API①

时间:2024-09-22 20:22:43浏览次数:11  
标签:count Vue const 14 watch API console ref log

setup

特点:执行实际比beforeCreate还要早,并且获取不到this

<script>
export default{
  setup(){
    console.log('setup函数');
    
  },
  beforeCreate(){
    console.log('beforeCreate函数');
      
  }
}
</script>

                     

在setup函数中提供的数据和方法,想要在模版当中利用,必须在函数最后使用return。

<script>
export default{
  setup(){
    const a = 'okk';
    const loga = ()=>{
      console.log(a);
    }
    console.log('setup函数');
    return{
      a,
      loga
    }
  },
  beforeCreate(){
    console.log('beforeCreate函数');
  },
  
}
</script>

<template>
  <div>{{ a }}</div>
</template>

当然有更简便的方法,setup语法糖。在script标签里面加上setup即可。

<script setup>
const a = 'okk'
const loga =() =>{
  console.log(a);
  
}
</script>

reactive和ref

reactive

作用:接受对象类型数据的参数传入并返回一个响应式的对象

核心步骤:

  1. 从vue包中导入reactive函数
  2. 在<script setip>中执行reactive函数并传入类型为对象的初始值,并使用变量接收返回值 

<script setup>
import { reactive } from 'vue';
const state = reactive({
  count:100
})
const add = ()=>{
  state.count++
}
</script>


<template>
  <div>
    <div>{{ state.count }}</div>
    <button @click="add">+</button>
  </div>
</template>

 reactive只能接受对象类型的数据,也有可以接受简单类型的数据的函数

ref

作用:接收简单类型或者对象类型的数据传入并返回一个响应式对象

核心步骤:

  1. 从vue包导入ref函数
  2. 在<script setup>中执行ref函数并传入初始值,使用变量接收ref函数的返回值

 注 : 在script中访问数据的时候需要通过.value,在template中不需要

<script setup>
import { ref } from 'vue';
const state = ref(0)
const add = ()=>{
  state.value++
}
</script>


<template>
  <div>
    <div>{{ state }}</div>
    <button @click="add">+</button>
  </div>
</template>

computed

核心步骤:

  1. 导入computed函数
  2. 执行函数在回调参数中return基于响应式数据做计算的值,用变量接收
<script setup>
import { computed, ref } from 'vue';


const list = ref([1,2,3,4,5,6,7,8])
const com = computed(()=>{
  return list.value.filter(item=>item>2)
})
</script>


<template>
  <div>
    <div>原始数据:{{ list }}</div>
    <div>计算后:{{ com }}</div>
  </div>
</template>

 watch

作用:侦听一个或多个数据的变化,数据变化时执行回调函数

两个参数:immediate(立即执行),deep(深度侦听)

监视单个数据的变化:

watch(ref对象,(newValue,oldValue) =>{...})

监视多个数据的变化:

watch([对象1,对象2],(newArr,oldArr)=>{...})

<script setup>
import { watch, ref } from 'vue';

const count = ref(0)
const name = ref('张三')

const change =() =>{
  count.value++
}
const changename=() =>{
  name.value='李四'
}
// 监视单个数据
// watch(count,(newValue,oldValue)=>{
//   console.log(newValue,oldValue);
// })

//监视多个数据watch([对象1,对象2],(newArr,oldArr)=>{...})
watch([count,name],(newArr,oldArr)=>{
  console.log(newArr,oldArr);
  
} )
</script>

<template>
  <div>
    <div>{{ count }}</div>
    <button @click="change">改数字</button>
    <div>{{ name }}</div>
    <button @click="changename">改名称</button>
  </div>
</template>

immediate

说明:在侦听器创建时立刻触发回调,响应式数据变化之后继续执行回调

watch([count,name],(newArr,oldArr)=>{

  console.log(newArr,oldArr);

},{

  immediate:true

}

)

deep 

默认watch进行的是浅层监视,可以监视简单类型,不能监视到复杂类型内部数据的变化。

deep是深度监视,能够监视到对象类型里面某个数据的变化

watch(userInfo,(newValue)=> {

  console.log(newValue);

},{

  deep:true

})

精确侦听对象的某个属性 

watch(

  () => userInfo.value.age,

  (newValue,oldValue) => console.log(newValue,oldValue)

)

标签:count,Vue,const,14,watch,API,console,ref,log
From: https://blog.csdn.net/m0_74386799/article/details/142418632

相关文章

  • vue如何挂载路由
            在Vue中,挂载路由并不是指一个直接的API调用或方法,而是一个过程,它涉及到将VueRouter实例与Vue应用的根实例进行关联。这个过程通常是在Vue应用的入口文件中完成的,比如main.js或app.js。1、安装VueRouter:        使用npm或yarn将VueRouter添加到你......
  • 基于SpringBoot+Vue+uniapp微信小程序的居住证申报系统的详细设计和实现
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我成功案例代码参考数据库参考源码获取前言......
  • 基于SpringBoot+Vue+uniapp微信小程序的私家车位共享系统的详细设计和实现
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我成功案例代码参考数据库参考源码获取前言......
  • Vue 指令和响应式系统
    一、指令1.什么是指令?指令是特殊的属性,用于在模板中对DOM进行操作。指令的前缀是v-,后面跟随具体的指令名称。Vue内置了一些常用的指令,如v-if、v-for、v-bind、v-on等。2.常用指令v-if:条件渲染,只有条件为真时才渲染该元素。<pv-if="isVisible">我是可见的</p>......
  • Jboss CVE-2017-12149 靶场攻略
    漏洞简述该漏洞为Java反序列化错误类型,存在于Jboss的HttpInvoker组件中的ReadOnlyAccessFilter过滤器中。该过滤器在没有进⾏任何安全检查的情况下尝试将来⾃客户端的数据流进⾏反序列化,从⽽导致了漏洞漏洞范围JBoss5.x/6.x环境搭建cdvulhub-master/jboss/CVE-20......
  • noip2014联合权值
    noip2014联合权值题目描述无向连通图G有n个点,n-1条边。点从1到n依次编号,编号为i的点的权值为Wi,每条边的长度均为1。图上两点(u,v)的距离定义为u点到v点的最短距离。对于图G上的点对(u,v),若它们的距离为2,则它们之间会产生Wu×Wv的联合权值。请问图G上所有可产生......
  • 揭开 Vue 3 中大量使用 ref 的隐藏危机
    在Vue3中,ref 是用来创建响应式的引用,它能够追踪和管理单一的变量或对象。当代码中大量使用ref 时,虽然可以实现对各个状态或数据的精细控制,但也会带来一些问题和潜在影响。1. 大量使用ref 带来的问题1、代码冗长与维护成本高当一个组件中大量使用ref,每个状态都需要......
  • 浅谈在.Net Framework Winforms程序中调用 WinRT API
    浅谈在.NetFramework桌面应用中调用WinRTAPI【作者:张赐荣】在开发Windows程序时,我们经常会遇到需要调用系统功能的场景,比如文件操作、录音、摄像头管理等。在传统的桌面应用开发中,使用.NetFramework封装的Win32API**或者直接调用底层复杂的com接口来完成这些功能,......
  • 【题解】【枚举】—— [NOIP2014 普及组] 比例简化
    【题解】【枚举】——[NOIP2014普及组]比例简化[NOIP2014普及组]比例简化题目背景题目描述输入格式输出格式输入输出样例输入#1输出#1提示1.思路解析2.AC代码[NOIP2014普及组]比例简化通往洛谷的传送门题目背景NOIP2014普及组T2题目描述在社交媒体......
  • 关于​​Vue学习笔记6中纯JavaScript实现的改进优化1
    0前言在 Vue学习笔记6:分别使用纯JavaScript和Vue的v-if指令来有条件地渲染网页元素_PurpleEndurer@5lcto的技术博客_51CTO博客的纯JavaScript实现有条件地渲染网页元素中,我们列举了苹果、桔子和葡萄3种水果,并使用3个<p>...</p>来对应,在实现显示用户选择的水果的showFruit函数中,......