Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Day139:Vue data 中某一个属性的值发生改变后,视图会立即同步执行重新渲染吗?为什么? #953

Open
Genzhen opened this issue Sep 14, 2020 · 2 comments
Labels
Vue teach_tag

Comments

@Genzhen
Copy link
Collaborator

Genzhen commented Sep 14, 2020

每日一题会在下午四点在交流群集中讨论,五点小程序中更新答案
二维码加载失败可点击 小程序二维码

扫描下方二维码,收藏关注,及时获取答案以及详细解析,同时可解锁800+道前端面试题。

@Genzhen Genzhen added the Vue teach_tag label Sep 14, 2020
@wolichuang
Copy link

异步更新队列,Vue 在更新 DOM 时是异步执行的,当你设置 vm.someData = 'new value',该组件不会立即重新渲染,可以在数据变化之后立即使用 Vue.nextTick(callback)。这样回调函数将在 DOM 更新完成后被调用。

@luuman
Copy link

luuman commented Nov 2, 2021

不会立即同步执行重新渲染。Vue 实现响应式并不是数据发生变化之后 DOM 立即变化,而是按一定的策略进行 DOM 的更新。Vue 在更新 DOM 时是异步执行的。只要侦听到数据变化, Vue 将开启一个队列,并缓冲在同一事件循环中发生的所有数据变更。

如果同一个watcher被多次触发,只会被推入到队列中一次。这种在缓冲时去除重复数据对于避免不必要的计算和 DOM 操作是非常重要的。然后,在下一个的事件循环tick中,Vue 刷新队列并执行实际(已去重的)工作。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Vue teach_tag
Projects
None yet
Development

No branches or pull requests

3 participants