Vuex + firebase数据库操作

问题描述 投票:0回答:1

我正在通过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}。我有类似“提交已分配但从未使用过”的错误]

javascript firebase vue.js firebase-realtime-database vuex
1个回答
0
投票

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);
        });
}

这是最好的方法。

© www.soinside.com 2019 - 2024. All rights reserved.