我正在try 用Vue构建一个简单的聊天应用程序.js.我的问题是,当写入新消息时,消息区域需要滚动到底部.

我用v-for指令循环浏览消息.v-for更新DOM时是否会发生事件?

我这样做是为了让message area div监听组件的消息array.我try 过这样做,在将消息附加到数组的同一个函数中,它会将消息区域div的scrollTop设置为99999.但问题是v-for没有更新DOM,所以它不会滚动到正确的点.

推荐答案

我有一个类似的问题,但我使用vue.nextTick()的不同方法.我需要确保v-for已经完成渲染,因为组件不会立即重新渲染,当队列为空时,它将在下一次"勾选"时更新.

Vue.component('message', {
  data() {
    return {
      message: []
    }
  },
  methods: {
    updateMessageArray(newMessage) {
      this.message.push(newMessage);

      this.$nextTick(() => {
         // Scroll Down
      })
    }
  }
})

https://vuejs.org/v2/api/#Vue-nextTick

https://vuejs.org/v2/guide/reactivity.html#Async-Update-Queue

Vue.js相关问答推荐

如何默认打开一个v-list-group?

从组件中检索 Shopware CMS 编辑器中的自定义实体数据

Vue 2 如何在全局函数中返回观察者

当用户在嵌套路由中时激活链接

使用 cypress 进行 e2e 测试的 vuejs 期间出现 Webpack 错误

props至少应该定义它们的类型

Webpack - MiniCssExtractPlugin 不提取文件

Vuetify 置顶工具栏

使用 v-slot:body 时 Vuetify v-data-table 没有响应

全局方法和实例方法有什么区别?

在 SPA VueJS 中全局声明 mapState 和 mapMutations

v-for 中的 VueJS 插槽

如何使表格行可点击并展开行 - vue.js - element-ui

store 的 Vuex Classic 模式已弃用,将在 Nuxt 3 中删除

vuetify:以编程方式显示对话框

如何使用 JavaScript 按索引删除数组元素?

Laravel 和 Vue - handler.call 不是函数

Vuejs获取事件正在调用的元素?

Vue.js 和 jQuery datepicker/timepicker 双向绑定

路由使用 nuxt-i18n 在 nuxt 中推送区域设置路由