首页

文章

vue.js中,什么时候用methods?什么时候用computed?什么时候用watch

发布网友 发布时间:2022-03-25 06:32

我来回答

3个回答

热心网友 时间:2022-03-25 08:02

computed
以前的名字叫做ready
是在dom加载后马上执行的。

而methods中的函数,则必须要有一定的触发条件。
在模板中绑定表达式是非常便利的,但是它们实际上只用于简单的操作。模板是为了描述视图的结构。在模板中放入太多的逻辑会让模板过重且难以维护。这就是为什么 Vue.js 将绑定表达式*为一个表达式。如果需要多于一个表达式的逻辑,应当使用**计算属性**。
Vue实例的computed的属性
<div class="test">
<p>原始的信息{{message}}</p>
<p>计算后的信息{{ComputedMessage}}</p>
</div>

js代码
var myVue = new Vue({
el: ".test",
data: {
message:12
},
computed:{
ComputedMessage:function () {
return this.message+10;
}
}
});

界面会显示 12 和 22
上述的方式是一种缓冲的实现的效果,这种实现的方式依赖于它的缓寸,计算得到的属性只有在相关依赖(message)改变的时候才会重新取值,这就意味着只要message没有发生改变的时候,多次访问ComputedMessage都不会再重新执行计算的这个属性。。

计算后的ComputedMessage属性始终是依赖于message的
通过调用函数实现同样的效果
<div class="test">
<p>原始的信息{{message}}</p>
<p>计算后的信息{{MessageFunction()}}</p>
</div>

js代码
var myVue = new Vue({
el: ".test",
data: {
message:12
},
methods:{
MessageFunction:function () {
return this.message+10;
}
}
});

得到的结果和上面的结果是一样的,但是每次被重新渲染的时候都会被重新调用。
所以使用上述两种方式的时候,首先要确定你是否需要借助缓存
使用vue实例的watch
这个没有看懂呀
但是使用computed这个属性更加的方便和快捷
<div class="test">
<p>原始的信息{{fullName}}</p>
</div>

js代码
var myVue = new Vue({
el: ".test",
data: {
firstName:"fur",
lastName:"bool"
},
computed:{
fullName:function () {
return this.firstName+this.lastName
}
}
});

而且你可以computed属性设置setter getter是默认就有的。

演示set和get的调用过程
<div class="test">
<p>原始的信息{{fullName}}</p>
<button @click="fu">test</button>
</div>

js代码
var myVue = new Vue({
el: ".test",
data: {
firstName:"fur",
lastName:"bool",
fullName:"sasas dsdsd dsds"
},
computed:{
fullName:{
get:function () {
console.log("get")
return this.firstName+this.lastName
},
set:function(value){
var names=value.split(" ");
this.firstName=names[0];
this.lastName=names[names.length-1];
console.log("set");
}
}
},
methods:{
fu:function () {
myVue.fullName="sasas dsdsd dsds";
console.log(myVue.firstName); //sasas
console.log(myVue.lastName); //dsds
}
}
});

首先会输出get;

在点击按钮为fullName赋值的时候首先调用set 再调用get方法。
自定义的Watcher
虽然计算属性在大多数情况下是非常合适的,但是有的时候也需要自定义一个watcher。这是因为你想要在数据变化响应的时候,执行异步操作胡总和其他的操作是非常有用的。

热心网友 时间:2022-03-25 09:20

1、methods是个方法,比如你点击事件要执行一个方法,这时候就用methods,

2、computed是计算属性,实时响应的,比如你要根据data里一个值随时变化做出一些处理,就用computed。

3、举一个例子帮助理解:

1)<div id="root">;

2) </div>;

3) <script>        var vm = new Vue({            el: '#root',            data:data,            methods:{

4)method_now(){                    return Date.now();} },            

5)computed:{                

6)computed_now: function () {                    return Date.now();}} })

7)</script>

4、控制台访问:

1)$vm0.computed_now;

2)1491741921719$vm0.computed_now;

3)1491741921719$vm0.computed_now;

4)1491741921719$vm0.computed_now;

5)1491741921719$vm0.method_now;

6)()1491741949941$vm0.method_now;

7)()1491741950734$vm0.method_now;

8)()1491741951445$vm0.method_now;

9)()1491741952117。

5、methods是方法和原生js没区别,大多是需要我们主动调用(比如事件)。

6、computed是get 这个get有点特殊,只要触发所依赖数据的set会自动触发get。我们只关心get的return set由系统触发或者依赖的数据触发,官方说依赖缓存只是为了理解。其实Date.now()这种只是系统不能触发set,不能触发set get当然不会通知观察者。

7、watch 是set 由data触发,我们可以在set里进行自己的条件封装。

热心网友 时间:2022-03-25 10:54

mounted以前的名字叫做ready,不是computed。computed是计算属性。
2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 “君不见巴丘古城如培塿”的出处是哪里 带“奈何”的诗句大全(229句) 里翁行()拼音版、注音及读音 带“不虑”的诗句 “鲁肃当年万人守”的出处是哪里 无尘防尘棚 进出口报关流程,越详细越好。谢谢大家指教。 双线桥不是看化合价升多少就标多少的吗?为什么CL2+2KI=2KCL+I2中I失... 出师表高锰酸钾有画面了吗 2021年幼儿园新学期致家长一封信 电脑屏幕一条黑线怎么办? 销售代理商销售代理商的特点 商业代理商业代理的特征 如何看微信有没有开通微众银行 为什么微众没有开户 微众银行怎么开户 微众银行APP开户流程是什么? 唐古拉山海拔唐古拉山海拔是多少 怎么看待取消跳广场舞的人的退休金 如何选购新鲜的蓝田水柿? 恭城水柿柿树作用 创维洗衣机使用教程 创维全自动洗衣机怎么使用 自动开门器 狗羊属相婚姻相配吗 3岁的小孩不会说话怎么办 3岁孩子不会说话,应该挂什么科? 3岁小孩不会说话正常吗 鹿茸炖乌鸡怎么做? 新型冠状肺炎吃什么药可以预防 冰箱上电后一直响 食品生产许可证编号开头为“ G”。 库存过期香精 猎狐点卡平台经营范围 电影代理靠谱吗 兄弟三人,有什么好的QQ网名 租赁合同书范本简单版 vfp中的.vue是什么类型的文件? 怎么理解VUE,VUE的数据驱动原理是什么,解释 Vue.js 2.0 vue-router怎么设置路由 手机视频剪辑软件是怎么排名的? vue.config.productiontip = false什么意思 为什么vue编辑后就没有声音 vue: WebStorm设置快速编译运行的方法 二手魅族16s怎么消除原机的帐号和密码 M971q上市时间 魅族16s配置怎么样?? 怎么查询魅族手机首次激活时间? 魅族手机怎么查第一次开机时间等信息? 魅族手机怎么查询激活时间? 魅族手机如何查生产日期 魅族3的系统日历怎么看到农历,是不是没有啊 魅族mx5怎么在锁屏上显示农历 魅族16s刚到的新机怎么查生产日期?怎么看是不是二手的? 魅族手机的日历 无法设置农历事件么? mx3魅族手机的日历怎么看不到农历 魅族手机怎样在桌面添加阴历日期? vue的优势为什么使用vue? vue2.0 列表页跳详情页怎么做 解析如何学习Vue框架快速入门 vue.js怎么自学比较快 学习vue.js,Node.JS 等技术不知道写什么东西 请大佬帮解答下VUE与后端数据交互的问题? 一加7Pro的指纹怎么录入呢? 怎么给一加7Pro的指纹录入? 一加7Pro的指纹录入需要注意什么? 一加7Pro的指纹录入注意事项有哪些? 一加7Pro的指纹录入时的注意事项有哪些? 怎么给一加7Pro的指纹解锁? 怎么给一加7T指纹解锁? 苹果7怎么设置指纹福音 一加7Pro的指纹解锁注意事项有哪些? 一加7Pro的指纹解锁时的注意事项有哪些? 一加7Pro的指纹如何解锁? 一加7Pro的指纹怎么解锁呢? 一加7T指纹识别成功率低怎么回事? 微软1724屏幕抖换屏幕有用吗
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com