vue hooks怎么返回异步数据到template?-灵析社区

老詹啊老詹

## 问题 vue hooks怎么返回异步数据到template? ## 代码 hooks import { reactive } from 'vue' import axios from 'axios' export default function () { let tableData = reactive() const getData = async () => { const res = await axios.get('https://cnodejs.org/api/v1/topics') tableData = res.data.data console.log('tableData', tableData) } return { tableData, getData } } 组件 import { onMounted } from 'vue' import useTable from '../../hooks/useTable' const { tableData, getData } = useTable() onMounted(async () => { await getData() }) 数据返回了,但是没有显示在template上 ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241015/1430fd6868730aac5fed97309bfdbd38.png)

阅读量:18

点赞量:0

问AI
tableData = res.data.data; 这一串代码你知道什么意思吗?你把一个指向响应式的变量改变指向了一个字符串还是别的对象,让这个tableDate这个变量失去了响应式。你应该修改成这样: import { reactive } from "vue"; import axios from "axios"; export default function () { let tableData = reactive({ tableData: [] }); const getData = async () => { const res = await axios.get("https://cnodejs.org/api/v1/topics"); tableData.tableData = res.data.data; console.log("tableData", tableData); }; return { tableData, getData }; } 或者这样: import { ref } from "vue"; import axios from "axios"; export default function () { let tableData = ref([]); const getData = async () => { const res = await axios.get("https://cnodejs.org/api/v1/topics"); tableData.value = res.data.data; console.log("tableData", tableData); }; return { tableData, getData }; } 请你牢记!!不要不要不要不要改变响应式变量的指向!!!!!!!!!!