uniapp-计算属性、watch 侦听器、props验证

一、计算属性

计算属性本质上就是一个 function 函数,它可以实时监听 data 中数据的变化,并 return 一个计算后的新值

1.声明与使用计算属性 

计算属性需要以 function 函数的形式声明到组件的 computed 选项中:

使用时计算属性必须当做普通属性使用: 

  •  计算属性必须定义在 computed 节点中
  • 计算属性必须是一个 function 函数
  • 计算属性必须有返回值

2.计算属性 vs 方法 

相对于方法来说,计算属性会缓存计算的结果,只有计算属性的依赖项发生变化时,才会重新进行运算。

示例代码如下:

<!-- 计算属性VS方法计算 -->
<view class="">
		<input type="text" v-model="count" />
		<p>{{ count }}乘以2的值为{{ plus }}</p>
		<p>{{ count }}乘以2的值为{{ plus }}</p>//只输出一次:计算属性执行了
		<p>{{ count }}乘以2的值为{{ plus1() }}</p>
		<p>{{ count }}乘以2的值为{{ plus1() }}</p>//输出两次:方法执行了
</view>

<script>
export default {
	data() {
		return {
			count: 1
		};
	},
	computed: {
		plus() {
            console.log('计算属性执行了')
			return this.count * 2;
		}
	},
	methods: {
		plus1() {
            console.log('方法执行了')
			return this.count * 2;
		}
	}
};
</script>

 二、watch侦听器

watch 侦听器允许开发者监视数据的变化,从而针对数据的变化做特定的操作。

1.基本语法

在watch节点下,定义自己的侦听器

<script>
      export default {
        data() {
          return {
            username:'zk'
          };
        },
        watch:{
            //监听 username的值的变化
            //在形参列表中,第一个值是“变化后的新值”,第二个值是“变化前的旧值”
            username(newVal,oldVal){
                console.log(newVal,oldVal);
            }
        }
      };
</script>

2.immediate、deep 选项

监听复杂数据类型

watch: {
	list:{
		  deep:true, // 开启深度监听 专门对付复杂数据类型
		  immediate:true, // 首次监听 一打开页面就想监听
		  handler: function (newValue, oldValue){
				this.watchAllPrice = 0
				this.list.forEach((it, idx) => {
					if (it.status == true) {
						this.watchAllPrice = this.watchAllPrice + it.price * it.num
					}
				})				
		}			
   }
},

注:handler的函数格式不要写成箭头函数,否则拿不到当前的vue实例

三、props验证 

在封装组件时对外界传递过来的 props 数据进行合法性的校验,从而防止数据不合法的问题。

1. 对象类型的 props 节点

对象类型的 props 节点提供了多种数据验证方案,例如: ① 基础的类型检查 ② 多个可能的类型 ③ 必填项校验 ④ 属性默认值 ⑤ 自定义验证函数

1.1基础的类型检查

 2.多个可能的类型

如果某个 prop 属性值的类型不唯一,此时可以通过数组的形式,为其指定多个可能的类型

props:{
    //propsA属性的值可以是“字符串”或“数字”
    propA:[String,Number],
}

3. 必填项校验

如果组件的某个 prop 属性是必填项,必须让组件的使用者为其传递属性的值。

4.属性默认值

在封装组件时,可以为某个 prop 属性指定默认值

示例代码如下: 

props: {
  //通过“配置对象”的形式,来定义propB属性的“验证规则”
  propB:{
    type:String, //当前属性值必须是String字符串类型
	required:true, //当前属性的值是必填项,如果使用者没指定propsB属性的值,则在终端进行警告提示
	default:'张三' //如果使用者没有指定propB的值,则propB属性的默认值为 张三
	}
}

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算属性侦听器是Vue.js框架中用来响应式更新视图的重要概念。它们在Vue项目开发中都是非常重要的知识点,并且在面试中经常被问到。下面是计算属性侦听器的区别和使用场景: 1. 区别: - 计算属性是根据已有的响应式数据计算出一个新的值,并将其缓存起来,只有当依赖的响应式数据发生变化时,才会重新计算。计算属性适用于需要根据其他数据计算得出的值,例如对数据进行过滤、格式化等操作。 - 侦听器是用来监听某个特定的响应式数据的变化,并在数据变化时执行相应的操作。侦听器适用于需要在数据变化时执行异步或复杂的操作,例如发送网络请求、更新其他数据等。 2. 使用场景: - 计算属性适用于需要根据其他数据计算得出的值,并且这个值在多个地方被使用。例如,根据商品的数量和单价计算出总价,然后在多个地方展示总价。 - 侦听器适用于需要监听某个特定的响应式数据的变化,并在数据变化时执行相应的操作。例如,监听用户选择的城市变化,然后根据选择的城市发送网络请求获取该城市的天气信息。 综上所述,计算属性适用于需要根据其他数据计算得出的值,而侦听器适用于需要监听某个特定的响应式数据的变化。在实际开发中,根据具体的需求选择使用计算属性侦听器可以提高代码的可读性和维护性。 #### 引用[.reference_title] - *1* *2* *3* [深入与浅谈 Vue 中计算属性侦听器的区别和使用(Vue3版本为例)](https://blog.csdn.net/weixin_53231455/article/details/130377369)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值