当前位置: 首页 > 知识库问答 >
问题:

vue3如何将异步获取的后端返回值在前端页面显示?

吕皓
2023-10-13
async searchLocation() {      try {        const response = await axios.get('http://localhost:29999/selectLocationByNumber/'+this.inputValue);        console.log(response.data);        this.number = response.data.number;        this.location = response.data.location;      } catch (error) {        // 处理请求错误        console.error('Error fetching data:', error);      }    },
<script>export default {data() {    return {number:'',      location:'',}  }}</script>
<el-table>          <el-table-column label="号码">{{ number }}</el-table-column>          <el-table-column label="所属运营商">{{ location }}</el-table-column>        </el-table>

异步方法向后端发送请求,得到返回值response,number和location在页面上显示不出来?不会vue

共有1个答案

饶高雅
2023-10-13

在Vue 3中,您需要在searchLocation方法中更新您的数据的属性值。您正在将数据赋值给this.numberthis.location,但这些属性在Vue实例中并没有被定义为响应式数据。因此,当您尝试在模板中渲染这些属性时,Vue无法检测到这些属性的变化,也就不会更新视图。

您需要使用Vue的defineExpose方法来将这些属性定义为响应式数据。下面是一个示例:

<script>export default {  data() {    return {      number: '',      location: '',    }  },  setup() {    const props = defineProps({      inputValue: String,    })    const number = ref(null)    const location = ref(null)    const searchLocation = async () => {      try {        const response = await axios.get('http://localhost:29999/selectLocationByNumber/'+props.inputValue);        console.log(response.data);        number.value = response.data.number;        location.value = response.data.location;      } catch (error) {        // 处理请求错误        console.error('Error fetching data:', error);      }    }    defineExpose({      number,      location,    })    onMounted(searchLocation)  },}</script>

在这个示例中,我们使用了Vue 3的Composition API,特别是definePropsrefonMounted。我们使用ref创建了响应式的numberlocation引用,并在获取数据后更新这些引用的值。然后,我们使用defineExpose将这些引用公开,这样就可以在模板中使用它们。最后,我们使用onMounted钩子在组件挂载后立即调用searchLocation方法。

在模板中,您可以直接使用这些响应式数据,就像它们是普通的数据一样。Vue会自动跟踪这些引用的变化,并更新相应的视图。

注意:Vue3的Composition API需要Vue3.10版本或更高版本才能使用。如果你的Vue版本低于3.10,可能需要升级你的Vue版本或者寻找其他解决方案。

 类似资料:
  • 问题内容: 我在互联网上读过有关回调的信息,但就我而言我还是听不懂。 我具有此功能,并且在运行时会记录到控制台。但是,现在我需要在另一个功能中使用此响应,而我正在努力做到这一点。 这是我应该得到的地方:(这显然不起作用,因为它不等待响应。) 我真的很难把头放在回调上,我在这里盯着自己瞎了。 问题答案: 回调无法返回值,因为它们将要返回的代码已经执行。 因此,您可以做几件事。一个传递回调函数,异步函

  • 请问我如何在外部获取websocket 返回的数据呢?并且websoket的值是实时变化的

  • 前后端通过websocket进行通信,后端返回消息时采用流式返回,就像gpt官网回答问题。 前端的页面主要是html,想问问如何将后端返回的代码高亮显示,或者将代码放在md中。 我查了资料,用的最多的工具是highlight,想问问大家有没有相关的页面代码例子参考下 效果大概如下: 希望页面简单点,html实现即可

  • 前端使用vue,后端使用springboot,前后端分离,且已解决跨域,登录采用jwt验证 想实现功能:如果用户通过url栏输入地址方式来访问某个页面(非登录页),对未登录用户自动跳转登录页面 请问拦截器是设置在后端还是设置在前端?另外对于静态页面能拦截吗

  • 场景: 比如有一个调查问卷的项目,每个问卷里有很多道题,点击可以切换下一道题 假设我需要在显示之后的题目之前,展示所有题目的预览页面,且可以截图,应该如何显示? (如果只能在预览页面里遍历所有的题目全部渲染,这样是否会有性能问题?)

  • 用的vite运行vue,后端我开了环境软件,wampserver 是不是因为后端的PHP文件没有被解析???所以返回的是php的源代码???我先用的axios请求,结果是这样,后来换了XMLHttp请求还是这样,刚学vue3,卡在这了,百度了好久没找到答案,求大佬解答