javascript - Vue 需要在创建的方法中更新数据两次,但只有第一次可以工作

标签 javascript vue.js

我有一个 Vue 组件,它在创建的钩子(Hook)中获取一些数据,看起来像

axios.get('/all')
.then(res => {
    this.rows = res.data.table
    axios.post('/names', { array from GET/all })
    .then(res => {
        this.rows.users = res.data.data
    })
})

我遇到的问题是,Vue 模板显示的是我第一次设置 this.rows 时的数据,我已经用 console.log 检查了我设置 this.rows.users 的位置,并且它放置了正确的内容那里有数据。我缺少什么导致我的模板无法输出正确的数据?

最佳答案

您可以尝试将它们一起更新并减少渲染,并且如果它们不相互依赖,还可以防止链接 promise 。

下面的代码应该可以工作

Promise.All([axios.get('/all'),axios.post('/names')]) //executes them parallely
  .then(([rowsRes,usersRes]) => {
    this.rows = {...rowsRes.data.table, users: usersRes.data.data}
});

更新

你可以试试

axios.get('/all')
.then(res => {
    this.rows = res.data.table
    axios.post('/names', { array from GET/all })
    .then(res => {
        this.rows = {...this.rows, users: res.data.data} // do not mutate inner keys which can cause change detection issues.
    })
})

关于javascript - Vue 需要在创建的方法中更新数据两次,但只有第一次可以工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58331793/

相关文章:

javascript - 从 Summernote 中的光标位置获取上一个单词

javascript - 如何在哈希位置更改时触发事件

当单词以丹麦字符 æ、ø、å 开头时,Javascript 正则表达式失败

javascript - 更改 Vue.js 属性,使事件仅触发一次

javascript - Laravel Controller 将值作为 Vue prop 传递

css - 如何在 vue.js 中定义路由器链接内容颜色

javascript - 从数组的数字元素创建 HTML 表格

javascript - Ember 和 Dead Code 消除/Tree shake

vue.js - 添加 Vuex 模块时为什么会出现 "rawModule is undefined"?

vue.js - 错误删除 'CR' 更漂亮/更漂亮的 Visual Studio 代码