当前位置:   article > 正文

学习Uni-app开发小程序Day8

学习Uni-app开发小程序Day8

        前面几天,学习了vue的button组件、input组件,vue模版语法、计算属性等,在昨天又根据前面学习的,跟着做了一个小的购物车功能,今天学习了侦听器和计算属性

计算属性     computed

        computed是一个只读的状态,如果要修改computed定义的变量,不能直接修改,要修改数据源,不然会报错
        获取computed数据的时候,是和ref类型,需要加上.value的
        例如: console.log(fasName.value);
         在es6中,如果使用()=>这种方式,应该是
          ()=>{a+b}这种方式,但是当只有一行代码运算的时候,可以去掉双括号
          ()=>a+b

       下面是根据视频和自己整理的计算属性使用

  1. <template>
  2. <view class="out">
  3. <input type="text" v-model="firsName" placeholder="请输入姓名" />
  4. <input type="text" v-model="lirsName" placeholder="请输入名称" />
  5. <view> 球星全称:{{firsName+"-"+lirsName}}</view> <!--这是直接在html中,使用两个变量进行展示的 -->
  6. <view> 球星全称:{{fasName}}</view> <!--这是使用computed,进行计算后得到的值 -->
  7. <view> 球星全称:{{fustName()}}</view> <!--这是使用方法得到的值,但是方法必须要添加() -->
  8. <!-- 为什么要使用计算属性:计算属性是有缓存效果的,方法是每一次都会调用,是很耗内存的 -->
  9. </view>
  10. </template>
  11. <script setup>
  12. import { ref,computed } from 'vue';
  13. const firsName=ref("");
  14. const lirsName=ref("");
  15. // computed是一个只读的状态,如果要修改computed定义的变量,不能直接修改,要修改数据源,不然会报错
  16. // 获取computed数据的时候,是和ref类型,需要加上.value的
  17. // 例如: console.log(fasName.value);
  18. // 在es6中,如果使用()=>这种方式,应该是
  19. // ()=>{a+b}这种方式,但是当只有一行代码运算的时候,可以去掉双括号
  20. // ()=>a+b
  21. const fasName=computed(()=>firsName.value+"-"+lirsName.value);
  22. // 下面是定义一个变量,使用方法的形式进行数据操作
  23. const fustName=()=>firsName.value+"-"+lirsName.value;
  24. </script>
  25. <style lang="scss" scoped>
  26. .out{
  27. padding: 20px;
  28. input{
  29. border: 1px solid red;
  30. height: 40px;
  31. padding:0 10px;
  32. margin: 10px 0;
  33. }
  34. }
  35. </style>

 侦听器:watch和watchEffect

        watch侦听器,在每次响应式状态发生变化时触发回调函数;第一个参数可以是:的第一个参数可以是不同形式的“数据源”:它可以是一个 ref (包括计算属性)、一个响应式对象、一个 getter 函数、或多个数据源组成的数组:

  1. <template>
  2. <view class="">
  3. <input type="text" v-model="process" />
  4. {{process}}
  5. </view>
  6. </template>
  7. <script setup>
  8. import { ref, watch, watchEffect } from 'vue';
  9. // 使用监听器,watch:
  10. // 第一种:监听简单的文本框
  11. // 第一个参数是数据源,第二个参数是有两个参数,一个代表的是新值,newValue;一个是老值,oldValue;
  12. const process=ref("")
  13. watch(process,(n,o)=>{
  14. console.log(n);
  15. console.log(o);
  16. })
  17. // 第二种:监听一个对象,
  18. // 在监听对象的时候,需要用到一种()=>这种方式,然后跟着是新老值,
  19. /* const process=ref({
  20. name:"张三",
  21. age:29
  22. })
  23. watch(()=>process.value.name,(n,o)=>{
  24. console.log(n);
  25. })
  26. */
  27. // watch的深度监听,这里是在{}后面,加上一个deep:true,这就是深度监听的,immediate:true,这是立即执行
  28. // 深度侦听需要遍历被侦听对象中的所有嵌套的属性,当用于大型数据结构时,开销很大。
  29. // 因此请只在必要时才使用它,并且要留意性能
  30. // watch(process,(n,o)=>{
  31. // console.log(n);
  32. // },{deep:true,immediate:true})
  33. // 使用watch监听两个的时候,是要在参数中用数组例如:
  34. // watch([变量1,变量2],([n变量1,n变量2],[o变量1,o变量2])=>{
  35. // 操作逻辑
  36. // n变量1,n变量2:这是前面数组的新值
  37. // o变量1,o变量2:这是前面数据的老值
  38. // })
  39. // watchEffect侦听器,是不需要添加其他参数的,直接是监听全局的,具体用法,查看官方文档
  40. // watchEffect(()=>{
  41. // console.log(需要侦听的变量);
  42. // })
  43. </script>
  44. <style lang="scss" scoped>
  45. input{
  46. margin: 10px;
  47. padding: 0 10px;
  48. border: 1px solid red;
  49. }
  50. </style>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/579353
推荐阅读
相关标签
  

闽ICP备14008679号