NuxtServerInit在nuxt js vuex模块模式下的初始页面渲染上不起作用。但它适用于经典模式。以下代码是我使用的流程。
我的API呼叫
api / CategoryApi.js
import axios from 'axios';
const HEADERS = {
    Accept: 'application/json'
};
export default {
    getCategory(payload) {
        return axios.get(`${process.env.apiUrl}/category`, {
            payload,
            headers: HEADERS
        });
    }
}
商店/模块/CategoryStore.js
import api from '~/api/CategoryApi'
const state = () => ({
    categories: []
});
const getters = {
    allCategories: state => state.categories
};
const actions = {
    async nuxtServerInit({commit}) {
        const payload = {
            per_page: 6,
            page: 1
        };
        const response = await api.getCategory(payload);
        commit('setCategories', response.data.data);
    },
};
const mutations = {
    setCategories: (state, data) => {
        state.categories = data;
    }
};
export default {
    state,
    getters,
    actions,
    mutations
}
pages / index.vue
<template>
    <div>
        <v-flex xs6 sm4 md2 class="text-xs-center my-2 pa-2" v-for="category in allCategories" :key="category.id">
            {{ category.name }}
        </v-flex>
    </div>
</template>
<script>
    import { mapGetters } from 'vuex';
    export default {
        layout: 'default',
        computed: {
            ...mapGetters({
                allCategories: 'modules/CategoryStore/allCategories',
            })
        },
    }
</script>
我做错了吗?:/我想知道实现此目标的正确方法。
编辑:我对Aldarund的回答是如何做的(这可能对某人有帮助)
编辑的store / modules / CategoryStore.js
const actions = {
    async fetchCategories({commit}) {
        const payload = {
            per_page: 6,
            page: 1
        };
        const response = await api.getCategory(payload);
        commit('setCategories', response.data.data);
    },
};
添加了store / index.js
const actions = {
    async nuxtServerInit({dispatch}) {
        await dispatch('modules/CategoryStore/fetchCategories');
    },
};
export default {
    actions
}
如文档中所述
因此,您需要将nuxtServerInit放入store / index.js