return语句中两种不同的括号语法

IT技术 javascript reactjs
2021-05-19 09:19:04

我正在关注https://scotch.io/tutorials/learning-react-getting-started-and-concepts上的 ReactJS 入门教程,并遇到了这个通用代码,它有两个不同的 return 语句括号。

var MyComponent = React.createClass({
getInitialState: function(){
    return {
        count: 5
    }
},
render: function(){
    return (
        <h1>{this.state.count}</h1>
    )
}
});

他们为什么不同?交换其中任何一个都会导致错误。

1个回答

第一个是对象的有效 JS 返回,第二个是分组运算符。使用(stuff && moreStuff)return语句中返回的结果在括号内代码的,无论那是。

在这种情况下,括号内有一些浏览器无法理解的特殊 JSX。它在执行之前(通常在编译时)被转换为嵌套的react.createElement(...)调用JSX 只是为了方便给你类似 HTML 的体验。

正如我所说,括号只返回内部内容的结果,因此您可以例如返回其中的一个对象,这在编写短箭头函数时很有用:const mergeObject = (obj1, obj2) => ({ ...obj1, ...obj2 })而不是:

const mergeObject = (obj1, obj2) => {
  return {
    ...obj1,
    ...obj2,
  };
}