关于computed渲染问题

来源:4-5 依赖收集(上)

_涅槃_

2020-11-02

老师有个关于computed的问题想问你一下,我写了一个计算属性status(){ if(this.obj.state === ‘1’)return ‘显示’}, data里面定义的objj初始为{},没有state属性,mounted里面调用接口之后给obj赋值了,这时候有了state属性,按理说计算属性status应该会执行两次(初始和接口赋值),第一次初始没有state应该会报错,但实际计算属性status只运行了一次,请问这是为什么了?

写回答

3回答

前端工程师666777888

2021-03-29

要记住一个根本原则:

改变一个值要实现一些操作,首先这个值要有set方法。因为改变值后,后续的操作一定从执行set方法开始的

你的案例中:obj有set方法。但是obj.state 并没有set方法。所以无论你怎么改变obj.state,都不会发生什么

0
0

_涅槃_

提问者

2020-11-03

已经调试过了,当初始化data里面obj为空对象的时候,computed属性status只执行了一次,当obj初始的时候有state属性的时候执行了两次

0
1
ustbhuangyi
那这个不是符合预期的么
2020-11-03
共1条回复

ustbhuangyi

2020-11-02

你在 computed 定义里加个 debugger,断点调试一下先

0
0

Vue.js 源码深入解析 深入理解Vue实现原理

全方位讲解 Vue.js 源码,进阶高级工程师

4984 学习 · 1037 问题

查看课程