mirror of
https://github.com/tenrok/vue-meta.git
synced 2026-05-19 07:09:37 +03:00
63 lines
1.3 KiB
JavaScript
63 lines
1.3 KiB
JavaScript
import Vue from 'vue'
|
|
import Vuex from 'vuex'
|
|
|
|
Vue.use(Vuex)
|
|
|
|
export default new Vuex.Store({
|
|
// STATE
|
|
state: {
|
|
isLoading: false,
|
|
// its important that we set some defaults for the current post
|
|
// otherwise Vue will complain that properties are `null`
|
|
post: {
|
|
title: '',
|
|
content: '',
|
|
slug: '',
|
|
published: false
|
|
},
|
|
posts: [{
|
|
slug: 'a-sample-blog-post',
|
|
title: 'A Sample Blog Post',
|
|
content: 'This is the blog post content',
|
|
published: true
|
|
}, {
|
|
slug: 'an-unpublished-blog-post',
|
|
title: 'An Unpublished Blog Post',
|
|
content: 'This is the blog post content',
|
|
published: false
|
|
}, {
|
|
slug: 'another-blog-post',
|
|
title: 'Another Blog Post',
|
|
content: 'This is the blog post content',
|
|
published: true
|
|
}]
|
|
},
|
|
|
|
// GETTERS
|
|
getters: {
|
|
post(state) {
|
|
return state.post
|
|
},
|
|
publishedPosts(state) {
|
|
return state.posts.filter(post => post.published)
|
|
},
|
|
publishedPostsCount(state, getters) {
|
|
return getters.publishedPosts.length
|
|
}
|
|
},
|
|
|
|
// MUTATIONS
|
|
mutations: {
|
|
getPost(state, { slug }) {
|
|
state.post = state.posts.find(post => post.slug === slug)
|
|
}
|
|
},
|
|
|
|
// ACTIONS
|
|
actions: {
|
|
getPost({ commit }, payload) {
|
|
commit('getPost', payload)
|
|
}
|
|
}
|
|
})
|