我的计算属性加载之前,VUEJS/X数据模板加载
P粉356361722
P粉356361722 2024-03-29 17:39:55
0
1
397

首先,我很抱歉我的英语不好,我正在使用翻译器。

我是 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粉356361722
P粉356361722

全部回复(1)
P粉497463473

看来我已经解决了这个问题:

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

这对我有用,希望对有需要的人有所帮助。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!