404(未找到),同时尝试使用Vue 3和Axios访问单个POST

vuktfyat  于 2022-10-21  发布在  iOS
关注(0)|答案(1)|浏览(206)

我在Vue 3中有一个小应用程序,我列出本地json文件中的数据,然后单击到详细页面以查看其余数据。我能够列出所有数据并链接到详细页面,但我似乎想不出如何仅显示单个ID的数据。
router/index.js

...
const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [
    {
      path: '/',
      name: 'Ndas',
      component: Ndas
    },
    {
      path: '/nda/:id',
      name: 'NdaDetails',
      component: NdaDetails,
      props: true
    }
  ]
})
...

views/Ndas.vue--这行得通

<template>
  <main>
    <h1>NDAS</h1>
    <div v-if="loading">Loading...</div>
    <div v-for="nda in ndas" :key="nda.id">

      <router-link :to="{ name: 'NdaDetails', params: { id: nda.id }}">
        <h2>{{ nda.user_signature }}</h2>
      </router-link>

    </div>
  </main>
</template>

<script>
import axios from "axios";

export default {
  data() {
    return {
      loading: true,
      ndas: []
    }
  },

  mounted () {
    this.loading = true;
    axios
        .get('../../data/data.json')
        .then(response => (this.ndas = response.data))
        .catch(error => console.log(error))
        .finally(() => this.loading = false)

  },
}
</script>

views/NdaDetails.vue--这不起作用

<template>
  <div>
    <div v-if="nda">
      <h1>NDA's Detail Page</h1>
      <p>The job title is {{ nda.user_signature }}</p>
    </div>

  </div>
</template>

<script>
import axios from "axios";

export default {
  props: ['id'],
  data() {
    return {
      nda: {}
    }
  },

  async created() {
    try {
      const res = await axios.get('../../data/data.json/'+this.id);
      this.nda = res.data;
    } catch (error) {
      console.log(error);
    }
  },
}
</script>

k10s72fa

k10s72fa1#

更新:OP通过在服务器上提供他的JSON文件修复了这个问题,现在它工作得很好。
在这里,你可能想要这样的东西,而不是道具

const res = await axios.get('../../data/data.json/' + this.$route.params.id)

道具用于子/父内容中,以传递某些状态。
在这里,您可以直接访问URL的值(路由器是全局的),并删除props部分。

相关问题