首先,我很抱歉我的英语不好,我正在使用翻译器。
我是 VUE 和 VUE X 的初学者,肯定存在很大的错误。
我在使用 VUE 时遇到问题,目前我正在尝试根据其 ID 显示出版物。
这是我的数据:
data(){ return { list: [this.$store.dispatch('allPublications')], id:'', feed: '', } },
这是我的商店操作:
publicationId:({commit}, messages) => { instance.get('/publications/' + messages.id) .then(function(response){ commit('setMessage', response.data.publication) console.log(response) this.feed = response.data.publication.data }) .catch(function(error){ console.log(error) }) },
这是我的计算结果:
computed: { ...mapState({ user: 'profileUser', publication: 'publicationFeed', message: 'publicationInfos' }), message(){ return this.$store.state.message; }, },
这是我的状态:
setMessage: function(state, message){ state.message = message },
这是我的模板:
<template> <div class="card-body" @click="publicationId(message.id)"> <span class="badge bg-secondary">{{ message.User.username }}</span> <div class="dropdown-divider"></div> <div class="card-text d-flex justify-content-between align-items-md-center"> <p class="card-text d-flex flex-start">{{ message.message }}</p> </div> <span class="message__date">{{ message.createdAt.split('T')[0]}}</span> </div> <img class="card-img-top" alt="..." :src="message.image">
一些屏幕截图可以为您提供更多帮助:
VUE 谷歌浏览器工具
重新加载页面之前,一切正常
重新加载页面后,一切都出错了
只要我不重新加载页面,一切都会正常工作,一旦重新加载页面,我就会收到错误,我的计算值消失,并且我无法从我的计算中获取数据。
查了很多资料都没有解决这个问题,感谢您的帮助!
P粉4974634732024-03-30 09:00:56
看来我已经解决了这个问题:
data() { return { componentLoaded: false, list: [this.$store.dispatch('allPublications')], id: '', feed: '', } },
在安装中:
mounted() { this.componentLoaded = true; this.id = this.$route.params.id; this.$store.dispatch('publicationId', { id: this.$route.params.id }) },
在计算中:
computed: { message() { if (!this.componentLoaded) { return null } else { return this.$store.state.message; } }, },
我在模板中添加了一个 v-if
{{ message.User.username }}{{ message.message }}
test
这对我有用,希望对有需要的人有所帮助。