Добрый день.
Разрабатываю сайт, в качестве админки, wordpress.
Есть 2 store:
Страница home.
export function state() {
return {
home: []
}
}
export const mutations = {
setHome(state, home) {
state.home = home;
}
}
export const actions = {
async fetchHome({ commit }) {
try {
const home = await this.$axios.$get(process.env.WP_URL + '/wp-json/wp/v2/pages/10');
console.log(home, 'home')
commit('setHome', home);
} catch (e) {
console.log(e, 'e')
}
}
}
export const getters = {
home(state) {
return state.home;
},
homeIntro(state) {
return state.home.acf.intro;
}
}
И solutions, данные, которые нужно отображать на главной.
export function state() {
return {
solutions: []
}
}
export const mutations = {
setSolutions(state, solutions) {
state.solutions = solutions
}
}
export const actions = {
async fetchSolutions({ commit }) {
try {
const solutions = await this.$axios.$get(process.env.WP_URL + '/wp-json/wp/v2/soluzioni');
commit('setSolutions', solutions);
} catch (e) {
console.log(e, 'e')
}
}
}
export const getters = {
getSolutions(state) {
return state.solutions;
}
}
Главная страница.
<template lang="pug">
.home
HomeIntro
Solutions
</template>
<script>
import HomeIntro from "../components/Home/HomeIntro";
import Solutions from "../components/Home/Solutions";
export default {
async fetch({ store }) {
try {
if (store.getters['home/home'].length === 0) {
await store.dispatch('home/fetchHome');
}
} catch (e) {
console.log(e, 'e')
}
},
components: { Solutions, HomeIntro }
}
</script>
<style lang="scss" scoped></style>
И блоки Home intro и Solutions.
<template lang="pug">
.home-intro
img(:src="homeIntro.image" alt="")
.container
.home-intro__content
h5.home-intro__label {{ homeIntro.label }}
h2.home-intro__title {{ homeIntro.title }}
.home-intro__text(v-html="homeIntro.text")
</template>
<script>
export default {
computed: {
homeIntro() {
return this.$store.getters["home/homeIntro"];
}
},
mounted() {
// console.log(this.homeIntro, 'this.homeIntro')
}
}
</script>
<template lang="pug">
.solutions
.item
.img
img
.content
h2.title
.text
</template>
<script>
export default {
async fetch({ store }) {
await store.dispatch('solutions/fetchSolutions');
},
computed: {
solutions() {
return this.$store.getters["solutions/getSolutions"];
}
},
mounted() {
console.log(this.solutions, 'this.solutions')
}
}
</script>
Так вот, данные в store home и блок home intro приходит и отображаются, а вот в solutions, в store данные приходят, но в блоке Solutions.vue пустой массив.
В store еще есть файл index.js, и если в нем прописать NuxtServerInit, и туда подключить dispatch из home и solutions, то данные прийдут в блок Solutions, но я хочу реализовать через fetch.
Может быть, где-то есть конфликт, но я не вижу где.
Заранее благодарен.