vue-cli项目,npm run dev 打开地址显示数据为undefined ,但是在修改文件触发热更新后,数据又能拿到

发布于 2022-09-04 15:45:36 字数 2692 浏览 7 评论 0

vue-cli项目,npm run dev 打开地址显示数据为undefined(刷新浏览器一样显示数据为undefined) ,但是在修改文件(比如添加个无效的空格)触发热更新后,数据又能显示。之后再刷新浏览器后数据又找不到了。

直接刷新浏览器的截图(说明请求是能拿到的):
图片描述

触发热更新后的截图(可以看到两次获取的对象内容不一样):
图片描述
api.js:

import Vue from 'vue';
var config = require('../../config')
var url = process.env.NODE_ENV !== 'production' ? '/api/' : config.build.assetsPublicPath + config.build.assetsSubDirectory + '/api/'
export default{
    /*获取首页数据*/
    getIndexData: function (cb) {
        return new Promise((resolve, reject) => {
            Vue.http.jsonp(url+'index/index/index_get_jsonp').then(function (res) {
                if (res.data.code >= 200 && res.data.code < 300) {
                    cb(res.data.data)
                    resolve(res.data.data)
                    console.log(res.data.data);
                }
            }).catch((error) => {
                reject(error)
            })
        })
    }
}

vuex/module/index.js:

import * as types from '../mutation-types'
import api from '../api'
const state = {
    indexData:{}
}
const actions = {
    getIndexData :function({commit}){
        return api.getIndexData(function(res){
            commit(types.INDEX_GET_DATA,res);
        })
    }
}
const getters = {
    getIndexData:state =>state.indexData
}
const mutations = {
    [types.INDEX_GET_DATA](state,res){
        state.indexData = res
    }
}
export default{
    state,
    actions,
    getters,
    mutations
}

index.vue内:

<template>
    <div class="home-container">
            <common :commonData = "indexData.common_data">
            <floors :floorsData="indexData.recommend_product"></floors>
        </common>
    </div>
</template>

<script>
    import common from '../../components/common/common.vue'
    import Floors from '../../components/home/floor.vue'
    import {mapGetters} from 'vuex'
    import store from '../../vuex/store'
    export default {
         data(){
             return{
                 ...
             }
         },
        computed:{
            ...mapGetters({
                indexData: 'getIndexData'
            })
        },
        components: {
            ...
        },
        mounted:function() {
            this.$store.dispatch('getIndexData');
            console.log(this.indexData);
        }
    }
</script>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

物价感观 2022-09-11 15:45:36

这样:

watch:{
    indexData:function(val){
        //do method again
    }
},
computed:{
    ...mapGetters({
        indexData: 'getIndexData'
    })
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文