【发布时间】:2020-05-23 11:02:27
【问题描述】:
我在 Vuex 商店中有以下数据:
state: {
news: [
{ id: 1, title: "placeholder", text: "Lorem ipsum doloret imes", date: "20-01-2020", type: "management" },
{ id: 2, title: "Revenue", text: "Lorem ipsum doloret imes", date: "20-01-2020", type: "management" }]
}
我想根据路由中使用的id在组件中显示这些数据:
{path: '/news/:id',
component: () => import('../views/NewsDetail.vue'),
props: true
}
在我的 NewsDetail.vue 组件中,我尝试像这样检索数据:
<template>
<p class="display-1 text--primary">{{display.type}}</p>
</template>
<script>
data () {
return {
display: newsId
}
},
created () {
const newsId = this.$store.state.news.find((newsId) => { return newsId.id == this.$route.params.id})
}
</script>
但我收到错误消息,newsId 未定义,它已定义但从未使用过... 如何根据路由 id 显示来自 vuex 存储的数据(应该与存储中条目的 id 匹配)?
【问题讨论】:
-
不确定他们会如何提供帮助
-
如果您在
created生命周期中将const newsId更改为this.display,它将被修复 -
谢谢这个工作,它看起来很简单,让我觉得这是否是正确的方法?其他人建议使用 getter 或使用计算属性,这需要更多工作。
-
是的,您应该使用带计算的 getter,这将是更好的方法...如果
news在存储中被另一个组件或其他东西更改,您的数据将不会更新.我也更喜欢使用吸气剂 -
是的,您可以从这里阅读有关生命周期及其工作原理的更多信息:alligator.io/vuejs/component-lifecycle
标签: vue.js vuejs2 vue-component vuex vue-router