快速上手
安装
推荐使用yarn
安装。
yarn add vuex-sugar
使用步骤
Import
vuex-sugar
(我叫做VuexSugar
)。创建一个
VuexSugar
实例。创建实例时,可以传入实例选项。建议你应该始终传入一个
baseUrl
来表示向哪里发起请求。另外,可选的传入axios
实例,也可以初始化默认的state
。如果没有设置默认的state
,vuex-sugar
会自动根据property
设置为null
。添加 actions。
每个 action 都表示一个vuex action 的定义,通过传入选项参数对象来定义。当该
action
被调用时(action
属性指定的名称),会发起一个特定的请求(path
属性指定的请求),然后根据请求的返回值去设置对应的state
(由property
属性指定)。生成 store 对象。
手动调用
VuexSugar
实例的getStore方法,或者将VuexSugar
实例传入createStore方法。将store对象传入 Vuex.Store构建器,以进行注册。
// step 1
import VuexSugar from 'vuex-sugar';
// step 2
const posts = VuexSugar({
baseURL: '/v1/client',
state: { posts: [] }
})
// step 3
.get({
action: 'getPost', // action name
property: 'post', // state property name
path: ({ id }) => `/posts/${id}`
})
.get({
action: 'listPosts',
property: 'posts',
path: '/posts'
})
.post({
action: 'updatePost',
property: 'post',
path: ({ id }) => `/posts/${id}`
})
// step 4
.getStore(); // create store object
// step 5
export const store = new Vuex.Store(posts)
Store对象的结构
生成的 store 如下:
{
namespaced: false,
state: {
pending: {
posts: false,
post: false
},
error: {
posts: null,
post: null
},
posts: [],
post: null
},
mutations: {
LIST_POSTS: Function,
LIST_POSTS_SUCCEEDED: Function,
LIST_POSTS_FAILED: Function,
GET_POST: Function,
GET_POST_SUCCEEDED: Function,
GET_POST_FAILED: Function,
UPDATE_POST: Function,
UPDATE_POST_SUCCEEDED: Function,
UPDATE_POST_FAILED: Function
},
actions: {
listPosts: Function,
getPost: Function,
updatePost: Function
}
}
使用Store
上面生成的store
对象可直接作为Vuex.store的构建器选项,或者作为module使用。
当通过Vuex.store
注册后,即可像vuex
原有的action
、state
一样进行使用。
重要概念
在vuex-sugar
中需要明白三个重要的概念VuexSugar
实例、action
、store
。
VuexSugar
实例:是通过VuexSugar构造函数
与选项参数生成的对象,它主要包含了一些请求处理参数,默认的state
,以及action
的部分预定义参数。action
:通过VuexSugar实例add
方法(或者其他快捷方法,如:get
)方法添加的action
。此处的action
不同于 Vuex 中的action
,这里仅仅只是包含action
的一些预定义,并没有真正生成action
函数。同样可以传入action选项,每调用一次
add
方法,都会产生一个新的action
。执行action
时,可以传入提交参数。store
:这里的是store
与 Vuex store(module)的概念是一致的。通过调用VuexSugar.getStore()
产生真正的action
、mutation
等。