Javascript ES6 如何将 const 函数转换为函数

Posted

技术标签:

【中文标题】Javascript ES6 如何将 const 函数转换为函数【英文标题】:Javascript ES6 How to convert a const function to a function 【发布时间】:2018-12-04 06:52:26 【问题描述】:

尝试使用 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')
  )

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

【问题讨论】:

【参考方案1】:

您的商店操作将采用两个参数。第一个是 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

【讨论】:

以上是关于Javascript ES6 如何将 const 函数转换为函数的主要内容,如果未能解决你的问题,请参考以下文章

javascript Const vs Let:ES6

现代JavaScript:ES6+ 中的 Imports,Exports,Let,Const 和 Promise

ES6 JavaScript - const inside 还是 let outside 循环?

Javascript const箭头函数[重复]

JavaScript ES6 - let 与 const 使用方及与var对比

JavaScript ES6 - let 与 const 使用方及与var对比