箭头函数和括号()或{}或({})的使用

时间:2018-03-22 10:06:48

标签: javascript reactjs ecmascript-6

我无法理解为什么在箭头函数中我们不需要在({})括号中包含箭头函数的文字,而不是在这个例子中只包含在单个文本中的文字()大括号。为什么?我曾在网上冲浪找到答案,但失败了。

还有为什么我们将参数放在双括号({})中,而不仅仅是()

const FilterLink = ({ filter, children }) => (
   <NavLink
       to={filter === 'SHOW_ALL' ? '/' : `/${ filter }`}
       activeStyle={ {
       textDecoration: 'none',
           color: 'black'
       }}
   >
       {children}
   </NavLink>
)

2 个答案:

答案 0 :(得分:16)

使用({})destructure个参数,而=> ()是一个隐含的返回,相当于=> { return ()},而(只能用于消除开头之间的歧义对象和函数体的开括号,通常在具有多行返回值时使用。您可以简单地避免使用(并将NavLink与箭头=>

放在同一行
const FilterLink = ({ filter, children }) => ( // <-- implicit return 
  <NavLink
    to={filter === 'SHOW_ALL' ? '/' : `/${ filter }`}
    activeStyle={ {
      textDecoration: 'none',
      color: 'black'
    }}
  >
    {children}
  </NavLink>
)

相当于

const FilterLink = ({ filter, children }) => {
   return (
      <NavLink
        to={filter === 'SHOW_ALL' ? '/' : `/${ filter }`}
        activeStyle={ {
          textDecoration: 'none',
          color: 'black'
        }}
      >
        {children}
      </NavLink>
    )
}

检查more details on the usage of destructuring in ({ filter, children })

的答案

答案 1 :(得分:6)

const add = ( a, b ) => ( a + b )

相当于

const add = ( a, b ) => { return a+b; }

()之后使用=>时,它会自动返回内部值。

修改:您也可以完全省略(),感谢Tom Fenesh