Когда вы настраиваете модули в вашем магазине vuex, они просто являются частью вашего магазина, который, конечно, глобален и всегда будет.Поэтому вы не можете применять его только для выбора страниц или компонентов.Если вы хотите ограничить ваш вызов API только теми страницами, которые используют возвращенные данные, вы можете сделать это несколькими способами.
Во-первых, вы можете вынуть вызов API из магазина и сделать его на своей странице, используя asyncData.Итак, что-то вроде этого:
//users.vue
<script>
export default {
data: () => ({
users: []
}),
async asyncData({$axios}) {
let {data} = await $axios.$get('https://sample-url.com/users')
return {
users: data
}
}
}
</script>
В противном случае если вы предпочитаете хранить свои вызовы API в магазине, вы можете извлечь его из nuxtServerInit и отправить его со страницы следующим образом.
const actions = {
nuxtServerInit(vuexContext, context) {
},
setUsers(vuexContext, users) {
return axios.get('https://sample-url.com/users')
.then((response) => {
vuexContext.commit('setUsers', response.data.data.results);
})
.catch((err) => {
context.error(err);
});
}
};
затем отправьте setUsers со своей страницы следующим образом:
mounted: function () {
this.$nextTick(function () {
this.$store.dispatch('setUsers')
})
},
computed: {
loadedUsers() {
return this.$store.getters.getUsers;
}
}
Что касается второй части вашего вопроса, любой другой модуль vuex можно использовать таким же образом.