页面变化时用 axios 和 vue 改变数据

Posted

技术标签:

【中文标题】页面变化时用 axios 和 vue 改变数据【英文标题】:Changing data with axios and vue when the page change 【发布时间】:2021-02-14 01:19:10 【问题描述】:

我正在尝试使用 vue 和 axios 获取动态数据。当我单击链接路径时,数据必须更改。这是我的 TheUpperOrLower.vue 示例:

<template>
<div>
    <h2> title </h2>
    <p 
      v-for="muscle in muscles"
      :key="muscle.id"
    >
   <router-link
   v-if="muscle.upperOrLower === upOrLow"
   :to="
     name: 'target',
     params: slug: user, target: muscle.target, id: muscle.id
   "
   >
     muscle.target 
   </router-link>
    </p>
</div>
所以当我点击一个链接时,数据必须动态地改变视图。例如,假设我的第一个链接得到了 id: 1 这就是我的 target.vue 的工作方式:
<template>
 <div id="data-muscle">
  <h1> $route.params.target </h1>
 </div>
</template>
<script>
 import axios from "axios";
 export default 
  data() 
   return 
    excercices: ,
    loading: false,
    muscleId: 
  ;
,
created() 
  this.getMuscleData();
,
methods: 
    async getMuscleData() 
      this.loading = true;
      let response = await axios.get('api/api-platform/muscles/' + this.$route.params.id)
      this.loading = false;
      this.muscleId = response.data;
  ,
 
;
</script>

但是,当我使用 Vue 扩展程序(chrome)进行调试时,我的肌肉 ID 为空,并且我的控制台中出现错误消息:“http://127.0.0.1:8000/user/api/api-platform/肌肉/未定义” 我不明白为什么我的 ID 是未定义的。我做错了什么?

【问题讨论】:

你确定你的父组件中有muscle.id 是的,我有。如果我将 $route.params.target 替换为 $route.params.id ,则 id 为 print 嗯,这很奇怪。参数肯定可以在创建的钩子中访问 你也可以分享你的 vue-router 文件吗? 【参考方案1】:

这是我的 VueRouter 的文件:

import Vue from "vue";
import VueRouter from "vue-router";

Vue.use(VueRouter);

const routes = [
 path: '/:slug/:target', 
  name:"target",
  component: () =>
    import(/*webpackChunkName: "target"*/"../view/TheTarget")

]

 const router = new VueRouter(
routes,
mode: "history",
);

export default router;

【讨论】:

有什么帮助吗?

以上是关于页面变化时用 axios 和 vue 改变数据的主要内容,如果未能解决你的问题,请参考以下文章

vue 改变数据后,数据变化页面不刷新

vue3 学习笔记 —— axios 的使用有变化吗?

Vue计算属性和监听属性

深入浅出Vue.js--变化侦测

vue改变数组内容页面不刷新问题

vue监听路由的变化,跳转到同一个页面时,Url改变但视图未重新加载问题