Javascript Vuex+;firebase数据库操作
我在我的Vuex应用程序中使用firebase。我在vuex中有此操作Javascript Vuex+;firebase数据库操作,javascript,firebase,vue.js,firebase-realtime-database,vuex,Javascript,Firebase,Vue.js,Firebase Realtime Database,Vuex,我在我的Vuex应用程序中使用firebase。我在vuex中有此操作 async deleteTodo({ commit }, id) { await fbs.database().ref(`/todolist/${store.state.auth.userId}/${id}`) .remove() .then(() => { // fix this conso
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}
。我遇到了类似“commit assigned but never used”的错误deleteTodo({commit},id)
对第一个参数进行了解构。您的操作实际接收到的是一个上下文
对象,该对象有两个成员<代码>提交就是其中之一。通过像这样对其进行分解,可以隐式地将其分配给一个局部常量,然后不使用它。林特不喜欢这样。如果将其替换为deleteTodo(context,id)
,您的linter很可能会接受它。如果没有,您也可以使用deleteTodo(u,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');
});
}
这是最好的方法。不要破坏对象的结构,只使用占位符下划线:deleteTodo(\uID)