Вы можете написать таким образом.
<template>
<main class="portrait individual">
<h1 v-if="portrait">{{ portrait.title.rendered }}</h1>
</main>
</template>
<script>
export default {
computed: {
portraits() {
return this.$store.state.portraits;
},
portrait() {
return this.portraits.find(el => el.slug === this.slug);
}
},
data() {
return {
slug: this.$route.params.slug
};
},
created() {
this.$store.commit("getPortraits");
}
};
</script>
Кажется, this.$store.dispatch("getPortraits");
не вызывается.
Вместо этого Вы можете использовать this.$store.commit("getPortraits");
в created()
.
В хранилище / индекс. js.
export const state = () => ({
portraits: []
});
export const mutations = {
getPortraits(state) {
state.portraits.push({
slug: "a",
title: {
rendered: "hello"
}
});
}
};
Я пробовал в эту песочницу .
По-другому, вы также можете использовать портреты данные в data()
объекте.
<template>
<main class="portrait individual">
<h1 v-if="portrait">{{ portrait.title.rendered }}</h1>
</main>
</template>
<script>
export default {
computed: {
portrait() {
return this.portraits.find(el => el.slug === this.slug);
}
},
data() {
return {
slug: this.$route.params.slug,
portraits: this.$store.state.portraits
};
},
created() {
this.$store.commit("getPortraits");
}
};
</script>
И используйте v-if="portrait"
в теге h1 , поскольку портретный объект может иметь начальное значение, например, неопределенный или пустой массив.