vue.js - Nuxt Vuex Store - 模块化方法的问题
问题描述
我在 Nuxt 中建立了一个站点,并通过 WordPress API 将一组菜单项拉入 Vuex 商店。我目前正在使用即将弃用的经典模式,因此我想将其更新为此处提到的“模块”模式:https ://nuxtjs.org/guide/vuex-store/ 。我在 store/index.js 中有以下代码:
export const state = () => ({
menuMain: null
});
export const mutations = {
mutateMainMenu(state, data)
{
state.menuMain = data
}
};
import axios from "axios/index";
export const actions = {
async nuxtServerInit ({ commit }) {
const response = await axios.get('http://myapi.com/wp-json/wp/v2/pages')
commit('mutateMainMenu', response.data)
}
};
我希望这是将下面的代码移动到“store/menuMain.js”的情况:
import axios from "axios/index";
export const actions = {
async nuxtServerInit ({ commit }) {
const response = await axios.get('http://myapi.com/wp-json/wp/v2/pages')
commit('mutateMainMenu', response.data)
}
};
但是,这似乎不起作用。有没有人有任何想法?在任何示例中,我都没有看到在“store/index.js”以外的文件中设置了“actions”对象,所以我想知道这是否是问题所在。
本站使用的 Vue 版本为 2.6.10。
解决方案
nuxtServerInitAction
只能在主模块中定义。
如果您使用 Vuex 商店的 Modules 模式,则只有主模块(在 store/index.js 中)会收到此操作。您需要从那里链接您的模块操作。
https://nuxtjs.org/guide/vuex-store#the-nuxtserverinit-action
推荐阅读
- ios - 使用其内容大小高度计算 UITableView 的高度
- ios - iOS 14 中的“不支持基于 UIScene 的应用程序的代码路径”
- python - 为什么来自 NLTK Stemmer 输出的词干数量与预期输出不同?
- python - 声音变化时如何分割音频文件?
- javascript - 单击按钮时如何将按钮的值传递给函数
- c++ - “nullptr”和“NULL”的用例和区别是什么
- react-native - 是否可以在标记上有 react-native-maps 字幕?
- python - 将数据帧写入存储在服务器上的 postgresql 数据库的最快方法是什么?
- r - R闪亮 - 上传后更改文本文件输入
- .net - Windows 10 更新后的 .NET Framework 错误 - 文件丢失