gpt4 book ai didi

javascript - VueJS : render new component after click

转载 作者:搜寻专家 更新时间:2023-10-30 22:54:28 24 4
gpt4 key购买 nike

我想在 vue.js 中呈现新组件,就好像它是新页面一样。

我正在尝试用一种叫做“动态组件”的东西来做到这一点

父级:Post.vue
child :Detail.vue

因此,如果单击其中一个帖子,帖子将关闭,详细信息将打开。

问题是我必须将点击的帖子的 ID 发送到详细信息。

这是我的一些代码。

Post.vue


<template>
<div>
<div v-if="loading">
loading...
</div>
<div v-else class="container">
<ul>
<li v-for="(post, index) in filteredPosts" v-bind:key="post.no">
<section class="post__main">
<div @click..?? class="main__title">{{post.title}}</div>
</section>
</li>
</ul>

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

<script>
created() {
axios.get(this.url, {
params: {
page: this.page,
ord: this.ord,
category: []
}
}).then(res => {
this.posts = res.data.list;
this.loading = false;
this.page++;
});

Detail.vue

<template>
<div>
{{contents}}
</div>
</template>

<script>
import axios from 'axios';
export default {
name: 'Datail',
data() {
return {
req_no: null,
contents: {}
}
},
created() {
axios.get(url, {
params: {
req_no: this.req_no
}
}).then(res => {
this.contents = this.res.data
});
}
}
</script>

我觉得我可以用 propsv-if 来做。有人能帮我吗?谢谢!

最佳答案

点击帖子后,将帖子 ID 传递给点击处理程序。在点击处理程序中,路由到 detail.vue,将帖子 ID 作为路由参数传递。

如下所示:

  <li v-for="(post, index) in filteredPosts" v-bind:key="post.no">
<section class="post__main">
<div @click="onPostClick(post.id)" class="main__title">{{post.title}}</div>
</section>
</li>

在您的点击处理程序中:

 onPostClick(id: number) {
this.$router.push({
name: 'details',
params: {
id
}
});
}

如果您在您的应用中正确设置了 vue 路由器并且有一个有效的路由以获取详细信息,这将起作用。

您可以按如下方式访问详细信息组件中的帖子 ID:

created() {
this.postId = this.$route.params.id;
}

关于javascript - VueJS : render new component after click,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56165192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com