• 前端菜鸡学习日记 -- computed和watch的用法


    目录

    1.computed:

    2.watch:


    哈喽哇大家,又是新的一周,因为一些特殊的原因,所以目前是比较闲的,就趁机多学习一点东西把,这些学习日记就是学习中的笔记咯,流水账日记则是工作中遇到的实际的问题,大家可以按需查看~  (侧重于vue3

    ------------------------------------

    1.computed:

    语法:const 变量名  = computed(() => { return })

    步骤:从vue中导入‘computed’函数

               在setup函数中,使用computed函数,传入一个喊出,函数返回计算好的数据

               最后,setup函数返回一个对象,包含该计算属性数据即可,然后模板内使用

    例子:

    1. import { computed , ref } from 'vue' //导入
    2. const list = ref(2,5,8,9,10,3) //定义一个list变量
    3. //需求:计算list中大于5的数据
    4. const newList = computed(() =>{
    5. return list.value.filter((item) =>item>5)
    6. })

    通过以上的代码即可计算完成,想要查看的话可以输出到页面中查看,例如:

    1. <ul>
    2. <li v-for = 'item in newList ' :key = 'item'> {{ item }} </li>
    3. </ul>

    当然插看的方式不只是这一种,这种作为例子查看简单直接

    如果给list一个按钮,并且点击的时候给一个100内的随机数组,就会发现,当新增的随机数是大于5的list更改的同时newList也会进行变化

    1. 点击事件:
    2. const changeList = () =>{
    3. list.value.push( Math.random()*100+10)
    4. }
    5. 按钮:
    6. <button>新增随机数</button>

    就像截图所示那样,所以可以看出,computed是依赖list变量的计算结果,一旦list变化,那么newList也会进行变化,即有缓存

    特点:

    1.有缓存

    2.不支持异步

    3.一般用于计算

    ----------------------------------------

    2.watch:

    语法1:watch (变量,() => {})

    语法2:watch([变量1,变量2,....],() => {})

    步骤:同computed的步骤

    用法:可以监听一个或者多个,也可以监听对象中的一个属性也可以配置深度监听

    语法1和2例子:

    1. const count = ref(0) //定义一个变量
    2. const bool = ref(false)
    3. watch(count,(newval,oldval) => {
    4. console('count变化了', newval,oldval)
    5. }) //按照语法进行一个新的值和酒的值变化的输出
    6. 想要监听多个变量的话就是 前边变量部分用中括号括起来
    7. wathc([count, bool] ,( newval,oldval ) => {
    8. console(newval,oldval) //可以一起监听到两个变量
    9. })

    深度监听:

    1. -----
    2. 深度监听:
    3. const obj ref({
    4. name:'小明',
    5. age:18
    6. })
    7. watch(obj,(newval,oldval) => {
    8. console.log(newval.oldval)
    9. },{
    10. deep:true, //深度监听
    11. immediate:true //页面加载后立即执行一次监听
    12. })
    13. 给个按钮
    14. <button @click = obj.age++> 年龄增加 button>
    15. 需要深度监听才可以,否则就是只有页面变化,但是监控不到

    deep:true  -- 开启深度监听

    immediate:true   -- 立即监听,加载刷新了立即执行一次

    特点:

    1.没有缓存

    2.支持异步

    2.主要是监测数据的变化,不做计算,没有返回

  • 相关阅读:
    ERROR: Cannot set priority of datanode
    18.Tornado_个人信息案例
    面试题速记:JavaScript有哪些数据类型,它们的区别是?
    uniapp中使用图片网络路径使用不了解决方法
    量化研究丨波动与盈利关系研究系列(一)
    Java真的不难(四十七)Mybatis-Plus的入门及应用
    @Component与@Configuration区别
    「C++小游戏教程」计时器
    网页按钮点击动画
    Android 插件开发框架 总结
  • 原文地址:https://blog.csdn.net/weixin_69868770/article/details/139736496