this.commit报错
来源:3-20 本地缓存处理方案
一只老梁
2022-01-14
老师,我的this.commit 报这个错误:
Property ‘commit’ does not exist on type ‘{ login(context: any, userInfo: any): Promise; }’
我在控制台打印this的时候,是有commit这方法,我执行了this.commit(“user/token”, “token…”)就没有报错。
我还尝试用context.commit也不会报错,只是要去掉user/
context.commit(“token”, “token…”)
这两种有什么区别吗?
写回答
1回答
-
你好
这涉及到了一个 vuex 的命名空间问题。
vuex 的命名空间分为两种:
全局命名空间。 createSotre 下的
模块命名空间。具体 module 下的(需要 namespaced = true)
那么如果期望触发《全局》下的 mutation,需要 commit(mutation),而局部下的,需要commit(模块名/mutation)。
这就是为什么当你使用 this 的时候,需要添加 'user/ xxx' 的原因.
但是除了 this 之外,还有另外一个概念,那就是 context。 context 是上下文的意思,《全局》和 《局部》都有各自的上下文(全局上下文,局部上下文)。 而你在某个模块的 action 下获取到的就是《当前《局部》的 context,也就是局部上下文》。在局部上下文下,访问局部的 mutation,只可以直接触发的,也就是 context.commit(“token”, “token…”) 的原因。
052022-01-21
相似问题