翻看文档是说created => computed => mounted
但是在我写代码的时候,我created 可以访问到computed的值,有点不理解
下面是代码
执行代码,created中访问到了computed中的值
按照这个执行顺序,那为啥created能访问到computed中的值呢?请大家帮忙解释下,谢谢大家
翻看文档是说created => computed => mounted
但是在我写代码的时候,我created 可以访问到computed的值,有点不理解
下面是代码
执行代码,created中访问到了computed中的值
按照这个执行顺序,那为啥created能访问到computed中的值呢?请大家帮忙解释下,谢谢大家
https://juejin.cn/post/695082...
1.
2.
3.
4.
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
6 回答2.4k 阅读
5 回答6.4k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
3 回答2.6k 阅读✓ 已解决
computed执行时机是在首次调用的时候执行,然后把执行的结果进行缓存,computed再次调用时就不会重新执行,而是返回缓存的结果;如果computed的依赖发生变化也会触发computed的重新执行并缓存结果。
当vue实例数据初始化之后,就可以调用computed的值了,所以在created、moutend都可以访问到computed的值。
computed的执行没有固定时机,当computed首次访问或computed依赖发生了变化才执行,所以created => computed => mounted 这个说法是不对的。
举几个例子:
有个computed: a;
1、当a的值只在
<template>{{a}</tempalte>
使用了;那么a的首次执行是渲染阶段render,执行顺序:created => render、computed => mounted2、当a的值只在created中调用了,执行顺序:computed、created => mounted
3、当a的值只在mounted中调用了,执行顺序:created => mounted、computed
4、当a的值只在setTimeout中调用了,执行顺序:created => mounted => setTimeout、computed
5、当a的值没有被调用时,则computed不会被执行