请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

watchEffect问题

老师我发现现在写watchEffect(()=>{
console.log(“abc”);
console.log(nameobj.name,nameobj.engName)
})
改变值,没有相关依赖它也会执行console.log(“abc”); ,是更新了吗?

正在回答 回答被采纳积分+3

插入代码

2回答

Dell 2021-05-01 21:27:12

nameobj 没变对吧

0 回复 有任何疑惑可以回复我~
  • 提问者 稻魂 #1
    nameobj.name、nameobj.engName值发生改变就会执行打印abc。但是视频里是没有执行打印的。老师可以试一下
    回复 有任何疑惑可以回复我~ 2021-05-02 10:53:57
慕容6332229 2021-05-01 17:22:27

它就是自动侦听nameobj对象呀,这个nameobj有任何变化,它都会执行。你这里,就是执行console.log。

然后,watchEffect和watch一个显著的区别就是——watch是有惰性的(lazy),即只有nameobj对象有变化时才执行,但watchEffect无需,其是无惰性的,nameobj在未变化时,即初始化时,就会执行,这里也就是console.log也会被执行。

所以,这里并不是说,没有依赖它也执行了console.log(“abc”),而是即使依赖没有变化,初始化时,也执行了console.log(“abc”)。

0 回复 有任何疑惑可以回复我~
  • 提问者 稻魂 #1
    是的,但是老师在视频里演示nameobj.name、nameobj.engName值发生改变的时console.log(“abc”)不会执行。我自己尝试它时会执行的
    回复 有任何疑惑可以回复我~ 2021-05-02 10:55:52
  • 变化时,应该会执行的呢!我也是边看,边自己敲代码,我映像中,我敲的代码执行时,发生改变也会执行的。
    回复 有任何疑惑可以回复我~ 2021-05-03 15:52:06
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信