vue.js - nuxtJS 与 Axios 和 VueX 的简单使用

标签 vue.js axios vuex nuxt.js

我正在发现 VueJS,但在查询 API 时遇到问题。 有(太多)资源,而且看起来我遇到的每个教程都有不同的方法。现在我迷路了......

该项目是一个 3 页的小展示。内容由 API 提供,每种语言都有一个端点。我想使用 VueX 来存储数据,并根据语言切换交互来更新它。

根据文档,“经典”方法已被弃用,我使用“模块”方法。不过,我认为将数据集中在存储根目录是可以的,因为只需要一次 API 调用:

/store/index.js

import axios from "axios";

// STATE - Initial values
export const state = () => ({
  content: {}
});

// ACTIONS - Asynchronous operations
export const actions = () => ({
    async nuxtServerInit({ commit }) {
    // I will introduce the language variable later here
    const response = await this.$axios.$get('https://APIURL.com/fr');
    const content = response.data;
    commit("setContent", content);
  }
});

// MUTATIONS - Updates the state
export const mutations = {
  setContent(state, content) {
    state.content = content;
  }
};

此时,我希望内容可供不同的页面或组件使用。

/components/A_component.vue 和/或 /pages/index.vue

...
  {{ content }}
...

// LOADS the store
import { mapState } from "vuex";

// COMPUTES the values retrieval
export default {
  computed: mapState(["content"])
};

但是,什么也没有显示。事实上,content 对象没有更新并且保持为空。

最佳答案

好吧,我终于找到了 bug 的出处。

actions 应导出为对象,而不是函数:

export const actions = {
    async nuxtServerInit({ commit }) {
    // I will introduce the language variable later here
    const response = await this.$axios.$get('https://APIURL.com/fr');
    const content = response.data;
    commit("setContent", content);
  }
};

关于vue.js - nuxtJS 与 Axios 和 VueX 的简单使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57759309/

相关文章:

vue.js - 无法在 WebStorm 中完全格式化 `less` 文件中的 `.vue` 代码

javascript - 如何删除 Vue.js 中值中的逗号

javascript - 使用来自 firebase 的数据填充 React-Table

javascript - 如何监听来自vuex的compute数组的变化

vue.js - 如何使用 Nuxt.js 在 vuex 状态中获取本地存储数据

typescript - 使用 Typescript 访问 Vue3 中的商店

vue.js - createApp({}).mount ('#app' ) 清除 vue3 中#app 的子元素

unit-testing - 使用 jest 和 vue-test-utils2 在 vue3 typescript 单元测试中模拟 axios (已解决)

javascript - 在 Vue 项目中使 axios 全局化不起作用

javascript - axios 条件参数