首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >const funcName = (args) => {}和const funcName = (args) => ( );?

const funcName = (args) => {}和const funcName = (args) => ( );?
EN

Stack Overflow用户
提问于 2020-07-18 18:33:27
回答 3查看 137关注 0票数 2

我是新来的反应,现在我正在上一门关于普卢拉明的课程。

让我们以这个例子为例:

代码语言:javascript
复制
const Card = (props) => {
      
      var profile = props;
      return (<div className="github-profile">
          <img src={profile.avatar_url} />
        <div className="info">
          <div className="name">{profile.name}</div>
          <div className="company">{profile.company}</div>
        </div>
        </div>);
};

这是一个函数组件,但可以重写如下:

代码语言:javascript
复制
const Card = (props) => (
        <div className="github-profile">
          <img src={props.avatar_url} />
        <div className="info">
          <div className="name">{props.name}</div>
          <div className="company">{props.company}</div>
        </div>
        </div>
);

实际的区别是什么?不是一回事吗?当你使用()和{}时?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-07-18 18:40:13

箭头函数可以有两种形式之一:

  1. (args) => { /* statements */ }
  2. (args) => returnValue(args) => { return returnValue }

的简写

您提到的(args) => (...)表单实际上只是带有额外括号的表单#2 (例如,如果返回一个对象文本,这可能是必要的,因为否则它将与表单#1不明确,并且它们是返回像<Thing>...</Thing>一样的JSX表达式的标准格式)。

如果你想做的不仅仅是做一些事情,你会使用表格#1,否则表格#2就足够了。

(注:如果只有一个参数,则左括号是可选的- args => ...(args) => ...__相同)

票数 3
EN

Stack Overflow用户

发布于 2020-07-18 18:39:16

当您使用()时,您告诉您的程序,无论()中有什么内容,请将其返回。因此,当您使用箭头函数而没有代码块{}时,它意味着它将返回箭头=>右边的任何东西,所以如果您说(x, y) => x + y意味着该函数将返回x + y,但在您的示例中,箭头后面的()只是将反应JSX分组,所以

代码语言:javascript
复制
const Card = (props) => (
  <div>
    Hello
  </div>
)

意思是把它还回去。对于您的问题“有什么不同”的答案,在第一种情况下,您有一个代码块{},您可以在第二个版本中返回JSX组件之前编写一些逻辑--它将立即返回组件,而不需要任何逻辑。

票数 2
EN

Stack Overflow用户

发布于 2020-07-18 18:45:04

在第一种情况下,您可以进行简单的javascript计算。

代码语言:javascript
复制
  const Card = (props) => {

  int x = 2+3; // or some foreach loop

  var profile = props;
  return (<div className="github-profile">
      <img src={profile.avatar_url} />
    <div className="info">
      <div className="name">{profile.name}</div>
      <div className="company">{profile.company}</div>
    </div>
    </div>); };

但在第二种情况下,您不能进行普通的javascript计算。它只返回JSX。因此,如果您想在返回JSX之前进行计算,请使用第一个。否则使用第二个

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62972348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档