嗨,我是 Nuxt JS 的新手用户。我正在尝试为我的 Nuxt 项目使用 Vuex 模块模式。
基本上我在我的 VueX 模块中使用 axios。我的代码如下:
存储/模块/users.js
import axios from 'axios';
const state = () => ({
users: []
});
// Sets the values of data in states
const mutations = {
setUsers(state, users) {
state.users = users;
}
};
const actions = {
nuxtServerInit(vuexContext, context) {
return axios.get('https://sample-url.com/users')
.then((response) => {
vuexContext.commit('setUsers', response.data.data.results);
})
.catch((err) => {
context.error(err);
});
},
setUsers(vuexContext, users) {
vuexContext.commit('setUsers', users);
}
};
// retrieves the data from the state
const getters = {
getUsers(state) {
return state.users;
}
};
export default {
state,
mutations,
actions,
getters
};
然后我将此模块包含在store/index.js中
import Vuex from 'vuex';
import Users from "~/store/modules/users";
const createStore = () => {
return new Vuex.Store({
state: {},
mutations: {},
modules: {
Users
}
})
}
export default createStore;
然后我将用户存储在我的 Vuex 中的一个页面中,例如: pages/index.vue
<script>
export default {
computed: {
loadedUsers() {
return this.$store.getters.getUsers;
}
}
}
</script>
我的问题是:
- 我意识到每当我刷新不需要用户的其他页面上的页面时,它会再次向我的 api 发送 GET 请求以获取用户。如何仅将模块用于我需要的页面,例如pages/index.vue
- 如果其他请求(如 GET 评论)应该在store/modules/comments.js下,我如何使用模块来使用它,然后再次包含它store.js