如何从箭头函数隐式返回对象?

时间:2017-06-11 01:26:03

标签: ecmascript-6 arrow-functions

我在Redux example

中转换此箭头功能
export const addTodo = (text) => {
  return {
    type: 'ADD_TODO',
    id: nextTodoId++,
    text
  }
}

我想知道我是否可以摆脱额外的{ return ...; }层,基本上摆脱了阻挡?

为了说明,以下两个箭头功能是相同的:

const fn = (a) => a + 1;
const fn = (a) => { return a+1; };

我可以从第二个更详细的版本中删除return

但是当我对Redux示例执行相同操作并剥离返回层时,我收到错误:

  

SyntaxError:repl,意外令牌,预期; ...

似乎对象文字中的{}和代码块之间存在一些混淆。有没有办法在这里删除这个额外的返回层?

2 个答案:

答案 0 :(得分:1)

你可以通过添加这样的额外括号来防止混淆 -

export const addTodo = (text) => (
  {
    type: 'ADD_TODO',
    id: nextTodoId++,
    text
  })

希望有所帮助:)

答案 1 :(得分:0)

此外,您可以使用更明确的Object.assign(可以说)更好的可读性:

const addTodo = text => Object.assign({
  type: 'ADD_TODO',
  id: nextTodoId++,
  text
})