vue3.0项目中,成功获取后端数据,却发现渲染失败,页面还是没数据?
vue
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
项目地址:https://gitcode.com/gh_mirrors/vu/vue
免费下载资源
·
建议先看下这篇:简析vue中的声明式渲染&响应式,ref()&reactive()-CSDN博客
渲染失败的原因,是你声明的东西,不具备响应性,或者响应性丢失。
甚至,你在console打印出来,的确有值,为什么页面没有加载出来?因为响应性不存在的情况下,HTML不会检测任何变量&常量的变化,即使它真的变化了,但不会进行检测,仍然使用最开始的值,所以渲染失败,页面没有数据。
解决的办法:赋予响应性即可,使用ref()或者reactive()。
注:el-tree是element-plus的树形组件,无须过多关注,利用其它组件完成视图部分即可,建议后续再深入。
<template>
<el-tree :data="resData" :props="defaultProps" />
</template>
<script lang="ts" setup>
import axios from 'axios';
import { ref } from 'vue'
const resData = ref<Tree[]>([]) // 赋予响应性
const getData = async () => {
axios.get('/product/category/treeList')
.then(response => {
resData.value = response.data.tree
});
console.log(resData)
}
getData() // 记得一定要调用,上面是声明
interface Tree {
name: string
children?: Tree[]
}
const defaultProps = {
children: 'children',
label: 'name',
}
</script>
或者:
<template>
<el-tree :data="resData" :props="defaultProps" />
</template>
<script lang="ts" setup>
import axios from 'axios';
import { reactive } from 'vue'
const resData = reactive<Tree[]>([]) // 赋予响应性
const getData = async () => {
axios.get('/product/category/treeList')
.then(response => {
for (let i = 0; i < response.data.tree; i++) {
resData.push({
name: response.data.tree[i].name,
children: response.data.tree[i].children
})
}
});
console.log(resData)
}
getData() // 记得一定要调用,上面是声明
interface Tree {
name: string
children?: Tree[]
}
const defaultProps = {
children: 'children',
label: 'name',
}
</script>
很明显,ref更简洁,同时reactive,对响应性的维持,更加苛刻,需要借助push等函数。
总而言之,建议使用ref()。
GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5
* chore: fix link broken
Signed-off-by: snoppy <michaleli@foxmail.com>
* Update packages/template-compiler/README.md [skip ci]
---------
Signed-off-by: snoppy <michaleli@foxmail.com>
Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891
Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
更多推荐
已为社区贡献1条内容
所有评论(0)