我在我的Vuex应用中使用了firebase。我在vuex里有这个动作
async deleteTodo({ commit }, id) {
await fbs.database().ref(`/todolist/${store.state.auth.userId}/${id}`)
.remove()
.then(() => {
// fix this
console.log('Todo deleted', commit);
})
}
如果我不需要提交一些东西,我如何在params中跳过{commit}
。我遇到类似“提交已分配但从未使用”之类的错误
发布于 2020-06-11 13:52:05
deleteTodo({ commit }, id)
对第一个参数进行解构。您的操作在那里实际接收的是一个具有几个成员的context
对象。commit
就是其中之一。通过像这样解构它,你隐式地将它赋给一个本地常量,然后就不使用它了。林特斯不喜欢这样。如果你用deleteTodo(context, id)
代替它,你的林特很有可能会接受它。如果不是这样,你也可以使用deleteTodo(_, id)
,不过我还是选择前者。(但这里还有一些您确实想要分解的东西...请阅读下面的内容。)
但是,如果您没有在这些操作中提交任何内容,为什么在Vuex中会出现这种情况?您可以简单地将其放入任何独立的函数中。Vuex专门用于管理状态。
啊,但是你确实用了state!您使用store.state.auth.userId
,但是您从文件的常量本地访问它,大概是用来创建存储的文件,而不是存储的实际状态。在大多数情况下,这可能会很好地工作,但这不是首选的方法。
你知道你在哪里也可以找到州吗?在相同的上下文对象上!所以最好是这样重写它:
async deleteTodo({ state }, id) {
await fbs.database().ref(`/todolist/${state.auth.userId}/${id}`)
.remove()
.then(() => {
// fix this
console.log('Todo deleted');
});
}
这是最好的方法。
https://stackoverflow.com/questions/62323701
复制相似问题