Jira Backlog数据在Vue组件渲染后列表不更新怎么办?
我在用Vue做Jira集成页面时遇到问题,从Backlog接口获取的数据在组件渲染后一直显示为空。
我按文档写了个请求,用axios获取数据后赋值给items数组,但页面就是不刷新。控制台打印数据是正常的,v-for也写对了,这是为什么?
<template>
<div>
<ul>
<li v-for="item in items" :key="item.id">{{ item.summary }}</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
items: []
}
},
mounted() {
axios.get('/api/jira/backlog')
.then(response => {
this.items = response.data.issues // 这里可能有问题?
console.log(this.items) // 打印显示数据正常
})
}
}
</script>
尝试过把axios换成箭头函数,也试过用Vue.set,但都不起作用。Jira接口返回的结构是{issues: […]},数据确实存在…
或者用nextTick强制刷新:
就这样。
this.items = response.data.issues换成this.$set(this, 'items', response.data.issues)或者确保 items 被正确监听。更简单的办法是提前在 data 里初始化成 null,或者用解构赋值触发响应式:
这样就能强制 Vue 检测到变化,列表就会正常更新了。