vuex中 store实例方法

1, commit

// type: mutation类型,
// payload:携带的参数,可选;
// options 里可以有 root:true, 它允许命名空间里提交根的mutation
commit(type:string, payload?:any, option?:Object)

commit(mutation:Object, options?:Object) // 提交mutation是以对象方式提交

2,dispatch

dispatch(type:string, payload?:any, options?:Object):Promise<any>
dispatch(action:Object, options?: Object): Promise<any> // 以对象形式分发action

分发action, options里可以有root: true, 它允许命名空间模块里分发根的action, 返回一个
解析所有被触发的action 处理器的Promise ,

3,replaceState(state:Object)

替换store的根状态,仅用状态合并或时光旅行调试,在分模块下的情况下,会有什么不同?

4,watch(fn: Function, callback: Function, options?: Object): Function

响应式地侦听 fn 的返回值,当值改变时调用回调函数。fn 接收 store 的 state 作为第一个参数,其 getter 作为第二个参数。最后接收一个可选的对象参数表示 Vue 的 vm.$watch 方法的参数。

要停止侦听,调用此方法返回的函数即可停止侦听。

this.$store.watch((state, getters) => getters.loading, () => {
        console.log('loaded')
        console.log('onSIgnin error', this.error.code)
      })

5,subscribe

subscribe(handler:Function, options?:Object):Function
订阅store的mutation, handler 会在每个mutation完成后调用,
接收mutation和经过mutation后的状态作为参数;

store.subscribe((mutation, state) => { })

默认情况下,新的处理函数会添加到其链的末尾,因此在其他处理函数之后执行,
通过想option添加prepend:true,可以把该处理函数添加到其链的最开始;
store.subscribe(handler, {prepedn: true})

要停止订阅,调用此方法返回的函数即可停止订阅。通常用于插件

5,subscribeAction

subscribeAction(handler: Function, options?: Object): Function

订阅 store 的 action。handler 会在每个 action 分发的时候调用并接收 action 描述和当前的 store 的 state 这两个参数:

store.subscribeAction((action, state) => {
  console.log(action.type)
  console.log(action.payload)
})

默认情况下,新的处理函数会被添加到其链的尾端,因此它会在其它之前已经被添加了的处理函数之后执行。这一行为可以通过向 options 添加 prepend: true 来覆写,即把处理函数添加到其链的最开始。

store.subscribeAction(handler, { prepend: true })

要停止订阅,调用此方法返回的函数即可停止订阅。

subscribeAction 也可以指定订阅处理函数的被调用时机应该在一个 action 分发之前还是之后 (默认行为是之前):

store.subscribeAction({
  before: (action, state) => {
    console.log(`before action ${action.type}`)
  },
  after: (action, state) => {
    console.log(`after action ${action.type}`)
  }
})

subscribeAction 也可以指定一个 error 处理函数以捕获分发 action 的时候被抛出的错误。该函数会从第三个参数接收到一个 error 对象。

store.subscribeAction({
  error: (action, state, error) => {
    console.log(`error action ${action.type}`)
    console.error(error)
  }
})

该 subscribeAction 方法常用于插件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值