Vuex + firebase 数据库操作
Posted
技术标签:
【中文标题】Vuex + firebase 数据库操作【英文标题】:Vuex + firebase database actions 【发布时间】:2020-10-01 01:21:23 【问题描述】:我在我的 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(_, id) 【参考方案1】:deleteTodo( commit , id)
解构第一个参数。您的操作实际收到的是一个 context
对象,它有几个成员。 commit
就是其中之一。通过像这样解构它,你隐式地将它分配给一个局部常量,然后不要使用它。短绒不喜欢那样。如果你用deleteTodo(context, id)
替换它,你的 linter 很有可能会接受它。如果没有,您也可以使用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');
);
这是最好的方法。
【讨论】:
以上是关于Vuex + firebase 数据库操作的主要内容,如果未能解决你的问题,请参考以下文章