我正在通过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);
})
}
如果不需要提交内容,如何在参数中跳过{commit}
。我有类似“提交已分配但从未使用过”的错误]
deleteTodo({ commit }, id)
解构第一个参数。您的操作实际收到的是一个context
对象,该对象具有几个成员。 commit
是其中之一。如果您要用deleteTodo(context, id)
替换它,则您的短毛猫很有可能会接受它。如果没有,您也可以使用deleteTodo(_, id)
,尽管我会选择前者。
尽管您没有在这些操作中提交任何内容,但为什么在Vuex中这样做呢?您可以简单地将其放在任何独立功能中。 Vuex专用于管理状态。
啊,但是您确实使用状态!您使用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', commit);
});
}
这是最好的方法。