created和computed的执行顺序?

翻看文档是说created => computed => mounted
但是在我写代码的时候,我created 可以访问到computed的值,有点不理解

下面是代码

执行代码,created中访问到了computed中的值

按照这个执行顺序,那为啥created能访问到computed中的值呢?请大家帮忙解释下,谢谢大家

阅读 3.5k
2 个回答

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 => mounted
2、当a的值只在created中调用了,执行顺序:computed、created => mounted
3、当a的值只在mounted中调用了,执行顺序:created => mounted、computed
4、当a的值只在setTimeout中调用了,执行顺序:created => mounted => setTimeout、computed
5、当a的值没有被调用时,则computed不会被执行

推荐问题
宣传栏