首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Vuex + firebase数据库操作

Vuex + firebase数据库操作
EN

Stack Overflow用户
提问于 2020-06-11 19:49:17
回答 1查看 86关注 0票数 1

我在我的Vuex应用中使用了firebase。我在vuex里有这个动作

代码语言:javascript
运行
复制
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}。我遇到类似“提交已分配但从未使用”之类的错误

EN

回答 1

Stack Overflow用户

发布于 2020-06-11 21:52:05

deleteTodo({ commit }, id)对第一个参数进行解构。您的操作在那里实际接收的是一个具有几个成员的context对象。commit就是其中之一。通过像这样解构它,你隐式地将它赋给一个本地常量,然后就不使用它了。林特斯不喜欢这样。如果你用deleteTodo(context, id)代替它,你的林特很有可能会接受它。如果不是这样,你也可以使用deleteTodo(_, id),不过我还是选择前者。(但这里还有一些您确实想要分解的东西...请阅读下面的内容。)

但是,如果您没有在这些操作中提交任何内容,为什么在Vuex中会出现这种情况?您可以简单地将其放入任何独立的函数中。Vuex专门用于管理状态。

啊,但是你确实用了state!您使用store.state.auth.userId,但是您从文件的常量本地访问它,大概是用来创建存储的文件,而不是存储的实际状态。在大多数情况下,这可能会很好地工作,但这不是首选的方法。

你知道你在哪里也可以找到州吗?在相同的上下文对象上!所以最好是这样重写它:

代码语言:javascript
运行
复制
async deleteTodo({ state }, id) {
    await fbs.database().ref(`/todolist/${state.auth.userId}/${id}`)
        .remove()
        .then(() => {
            // fix this
            console.log('Todo deleted');
        });
}

这是最好的方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62323701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档