这个问题其实挺有趣的,先抛结论:
数组响应确实是不会响应,但是你可以看到你页面上的数据其实会有变化
这是为什么呢?其实这里和两个概念有关:你在页面上看到的数据:其实是vue通过你的kkk的值更新对应的dom元素内部的值
vue更新dom的操作(也就是1的步骤)是异步执行的
关于1:
你应该听说过虚拟dom这个东西吧,没听说过也不要紧。具体其实就是说我们的数据映射到页面上并不是直接映射的,而是通过数据 =〉虚拟dom =〉更新真实dom这样一个过程。所以其实并不是直接你修改了你变量里的值,对应页面上dom元素的内容就直接改了,这中间有个过程。这点要记住,很重要
通过第一点的解答你知道了vue更新dom这个是有个过程的,并且这个过程他是异步的摘自vue官方文档:深入响应式原理章节
接下来我们详细介绍2: vue更新dom的操作是异步执行的
知道了vue更新dom的操作是异步的了,异步的方式具体是什么呢?根据场景支持程度分别分为setTimeout和Promise两类,分别对应创建的是JS运行时里的宏服务与微服务。宏服务与微服务的关系:一个宏服务下面可以有很多微服务,执行完一个宏服务再执行下一个宏服务。
这里的概念你可以之后在查,主要是要突出一个执行关系,就是在JavaScript运行时:第一个宏服务开始同步 => 第一个宏服务同步代码执行完成 => 第一个宏服务中微服务(Promise)代码执行完成 => 第二个宏服务(setTimeout)开始执行这样运行的,所以你可以看到无论是Promise的微