当我调度我的操作时,我收到此错误:“未知的本地操作类型...”,该操作恰好位于其他模块中。在某些情况下,我正在调度的操作不存在。因此,我需要应用一个条件来检查此操作是否存在,并仅在满足条件时调度该操作。我该怎么做呢 ?
小智 5
我有同样的问题,这是我解决的方法:
const methodName = MODULE_NAME + "/" + ACTION_NAME
const actionExists = Object.keys(window.Store._actions).findIndex(key => key === methodName) !== -1
if (actionExists) {
console.log(methodName + ' exists!')
} else {
console.log(methodName + ' doesn\'t exists!')
}
Run Code Online (Sandbox Code Playgroud)
我能想到的唯一情况是,当您使用vuex registerModule时,操作仅在某些情况下存在。
如果是这种情况,那么您可以添加一个Boolean属性来指示该模块是否已注册。所以在你的组件中:
const myModule = () => import('module-path.js')
export default {
data: () => ({
isModuleRegistered: false
}),
created() {
myModule.then(module => {
this.isModuleRegistered = true
this.$store.registerModule('myModule', module)
this.$store.dispatch('myModule/someAction')
})
},
beforeDestroy () {
// If you want to unregister it when component gets destroyed
this.isModuleRegistered && this.$store.unregisterModule('myModule')
}
}
Run Code Online (Sandbox Code Playgroud)
如果上面的代码片段没有回答您的问题或不符合您的需求:您必须在注册模块时设置一个布尔属性。然后检查该布尔值以查看模块是否已注册。当模块取消注册时,您还必须更改该布尔值。
请注意,上面我已经延迟加载了 vuex 模块。如果你想延迟加载 vuex 模块,请阅读这篇很棒的文章以了解更多信息
| 归档时间: |
|
| 查看次数: |
5350 次 |
| 最近记录: |