vue3 异步数据不渲染
时间: 2023-09-03 12:15:45 浏览: 138
可能是因为您没有正确地处理异步数据的更新。在Vue3中,您可以使用`ref`和`reactive`来处理响应式数据。如果您使用`ref`,则需要使用`.value`来访问数据。如果您使用`reactive`,则可以直接访问属性。在处理异步数据时,请确保在数据更新后手动触发重新渲染。
以下是一个处理异步数据的示例:
```html
<template>
<div>
<p v-if="loading">Loading...</p>
<ul v-else>
<li v-for="item in items" :key="item.id">{{ item.name }}</li>
</ul>
</div>
</template>
<script>
import { ref, onMounted } from 'vue'
export default {
setup() {
const items = ref([])
const loading = ref(true)
onMounted(async () => {
// 模拟异步数据请求
await new Promise(resolve => setTimeout(resolve, 1000))
items.value = [{ id: 1, name: 'item 1' }, { id: 2, name: 'item 2' }]
loading.value = false
})
return { items, loading }
}
}
</script>
```
在上面的示例中,我们使用`ref`来创建`items`和`loading`变量。在`onMounted`函数中,我们模拟了一个异步数据请求,并在数据请求完成后更新`items`和`loading`的值。最后,我们在`return`语句中将`items`和`loading`返回,以便在模板中使用。注意,我们在更新`items`和`loading`的值后没有手动触发重新渲染,因为Vue3会自动检测响应式数据的变化并更新视图。
阅读全文