Vue监听器与监听滥用

昨天工作的时候遇到了这么一个问题

watch里面是这么写的

然后想了想 id of null  id?什么id?

想了想 是prop嘛 就是userinfo 的id 没有呗 为啥没有

先不管这些 我们先反省一下 自己有没有用对 watch

watch和computed各自处理的数据关系场景不同 
1.watch擅长处理的场景:一个数据影响多个数据 
2.computed擅长处理的场景:一个数据受多个数据影响 
watch擅长处理的场景:一个数据影响多个数据

那么很显然 我们是要拿到 getUserInfo 的 而这个getUserinfo 从 store来的 是受人影响改变而改变的量  所以 我们不应该写在watch里面 应该写在 computed

这么一写 问题就解决了!

原文地址:https://www.cnblogs.com/dash-soap/p/10271754.html

时间: 2024-10-28 15:29:01

Vue监听器与监听滥用的相关文章

关于vue中滚动监听失效问题

在vue项目中, 监听window滚动失效;并且document.body.scrollTop一直是0的情况! 查找了许多资料;并没有找到合理的解决方案; 最中发现,在index.html设置了html,body的宽高设置成了100%; 这样会造成window.onscroll监听不到正确的滚出高度(恒为0); 不和你们多bb:解决方案: 将html,body的height设置为auto;即可解决!!

监听器[用于监听ServletRequest对象的产生和销毁] 学习笔记

import javax.servlet.ServletRequestEvent; import javax.servlet.ServletRequestListener; //监听器[用于监听ServletRequest对象的产生和销毁] public class MyServletRequestListener implements ServletRequestListener { //产生 public void requestInitialized(ServletRequestEvent

quartz2.3.0(九)job任务监听器,监听任务执行前、后、取消手动处理方法

job1任务类 package org.quartz.examples.example9; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.JobKey; import org.slf4j.Logger; import org.slf4j.LoggerFact

vue.js 组件监听

一.在通过点击事件触发的子组件中: addCart(event) { if (!event._constructed) { return; } if (!this.food.count) { Vue.set(this.food, 'count', 1); } else { this.food.count++; } this.$emit('cartadd', event.target) },// cartcontrol.vue组件 二.在父组件中 <div class="cartcontro

Vue数据的监听

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="x-ua-compatible" content="IE=edge"> 6 <meta name="viewport" content="width=d

vue浏览器返回监听

具体步骤如下: 1.挂载完成后,判断浏览器是否支持popstate mounted(){ if (window.history && window.history.pushState) { history.pushState(null, null, document.URL); window.addEventListener('popstate', this.goBack, false); } }, 2.页面销毁时,取消监听.否则其他vue路由页面也会被监听 destroyed(){ wi

vue 父组件监听子组件生命周期

1.方法一 使用$on和$emit // Parent.vue <Child @mounted="doSomething"/> // Child.vue mounted() { this.$emit("mounted"); } 2.使用hook // Parent.vue <Child @hook:mounted="doSomething" ></Child> doSomething() { console.l

vue 前端处理监听关键字搜索

根据组件的业务需要,有时候搜索是把关键字返回给后台,后台处理后再把数据返回给前端渲染(多次请求服务器):有时候是前端把页面的数据全部获取下来,前端处理关键字的搜索(影响页面加载) 我这个文章是介绍第二种情况,主要是要先了解es6的filter()和includes() filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素.不会对空数组进行检测.不会改变原始数组. array.filter(function(currentValue,index,arr),

VUE的watch监听对象

因为普通监听对象时,其实监听的该对象存放的堆地址,只有声明关键子字(deep: true)才能监听整个对象中所有属性变化: 当然如果监听的对象只有一两个属性,也可以直接分别监听其属性: //声明对象 data() { return { obj: { name: '黄国华' } } }, watch: { obj: { handler: function(newVal, oldVal) { console.log(newVal, oldVal); //因为对象为引用类型数据,所以新旧值其实是同一个