Dav*_*cio 4 javascript vue.js vuejs2
在我的组件中,我有一个消息数组。
data: function () {
return {
messages: [],
first_load: false
...
}
Run Code Online (Sandbox Code Playgroud)
在创建我的组件后,该消息数组最初由 Ajax 调用填充。数据来自服务器后,我只需将其推送到消息变量中,它会令人惊讶地在 UI 中绘制所有消息,但在推送数据后,我尝试滚动到 UI 底部,以便用户仅观看最新内容。
data.body.data.messages.map((message) => {
this.messages.push(message)
}
this.scroll_bottom()
Run Code Online (Sandbox Code Playgroud)
我注意到,在推送数据后执行简单的 javascript 滚动底线将不起作用,因为 UI 会异步刷新(当我 .push 到我的数组时,它不会在同步 UI 之前执行下一行),所以我最终添加超时然后滚动底部,但我认为这是非常可耻的。
我的黑客:
watch: {
messages:{
handler: function (val, oldVal) {
if (!this.first_load) {
this.first_load = true
setTimeout(() => {
this.scroll_bottom()
}, 1000);
}
},
deep: true
}
}
Run Code Online (Sandbox Code Playgroud)
关于如何利用这一点有什么想法吗?谢谢!
您可以使用updated生命周期钩子在 DOM 更新后执行某些操作。看一下官方文档。
updated: function () {
//scroll down logic here
}
Run Code Online (Sandbox Code Playgroud)
如果你的updated逻辑被快速调用,你总是可以使用合适的方法来减慢速度。
| 归档时间: |
|
| 查看次数: |
11488 次 |
| 最近记录: |