首页 > 解决方案 > Javascript ES6 如何将 const 函数转换为函数

问题描述

尝试使用 vuexfire 进行 Firebase 绑定,文档状态为插入以下绑定操作

const setTodosRef = firebaseAction(({ bindFirebaseRef, unbindFirebaseRef }, { ref }) => {
  // bunding will automatically unbind any previously bound ref so you
  // don't need to unbind before binding over an existing bound key
  bindFirebaseRef('todos', ref)
  // it is possible to unbind a bound key at any time
  unbindFirebaseRef('todos')
})

在我的商店 root.js 中,所有操作都使用以下模式编写

/**
 * Import Dependency
 */
import * as types from './mutation_types'
import i18n from '@/locales'
import * as firebase from 'firebase'
import { firebaseMutations, firebaseAction } from 'vuexfire'

setTodosRef ( ) {
  bindFirebaseRef('todos', ref)
  unbindFirebaseRef('todos')
}

如何将参数传递给函数?为了打电话

this.$store.dispatch('setTodosRef', db.ref('todos'))

setTodosRef (firebaseAction(({ bindFirebaseRef, unbindFirebaseRef }, { ref }))  { ... }  

不工作...

Syntax Error: Unexpected token, expected "," (119:29)

感谢您的反馈

更新

我使用删除了语法错误

  setTodosRef: firebaseAction(({ bindFirebaseRef, unbindFirebaseRef }, ref) => {
    bindFirebaseRef('todos', ref)
    unbindFirebaseRef('todos')
  })

但我不确定这是否正确......?

标签: firebasevue.jsvuexfire

解决方案


您的商店操作将采用两个参数。第一个是 vuex 传递的上下文对象,通常被取消引用。我没有你所有的代码,所以我不能为你写一个确切的方法,但它需要是这样的(假设是 es6):

setTodosRef({ commit }, todos) {
  commit(types.SET_TODOS, { todos })
} 

然后你会有一个处理提交的突变。它还从 vuex 接收一个注入参数作为第一个参数,然后在第二个参数中提供数据,例如:

[types.SET_TODOS](state, { todos }) {
  state.todos = todos
}

https://vuex.vuejs.org/guide/actions.html


推荐阅读