Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript const funcName=(args)=>;{ }; 常量funcName=(args)=>;( );?_Javascript_Reactjs_Function_Functional Programming_React Component - Fatal编程技术网

Javascript const funcName=(args)=>;{ }; 常量funcName=(args)=>;( );?

Javascript const funcName=(args)=>;{ }; 常量funcName=(args)=>;( );?,javascript,reactjs,function,functional-programming,react-component,Javascript,Reactjs,Function,Functional Programming,React Component,我是个新来的反应者,现在我正在参加一个关于多视距的课程 让我们举一个例子: const Card = (props) => { var profile = props; return (<div className="github-profile"> <img src={profile.avatar_url} /> <div className="info&

我是个新来的反应者,现在我正在参加一个关于多视距的课程

让我们举一个例子:

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>);
};
const卡=(道具)=>{
var profile=道具;
返回(
{profile.name}
{profile.company}
);
};
这是一个功能组件,但可以重写如下:

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>
);
const卡=(道具)=>(
{props.name}
{props.company}
);
实际的区别是什么?这不是一回事吗?当您使用()时,{}?

当您使用
()
时,您会告诉您的程序,
()
中的内容请返回。因此,当您使用不带代码块的arrow函数时,
{}
意味着它将返回箭头右侧的任何内容
=>
,因此,如果您说
(x,y)=>x+y
,则表示此函数将返回
x+y
,但在您的情况下,
()
在箭头之后只是对JSX进行分组

const卡=(道具)=>(
你好
)

我只是想把它还给你。您的问题“有什么区别”的答案是,在第一种情况下,您有一个代码块
{}
,您可以在返回JSX组件之前编写一些逻辑。在第二个版本中,它将立即返回组件,而不带任何逻辑。

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

  • (args)=>{/*语句*/}
  • (args)=>returnValue
    作为
    (args)=>{returnValue}
  • 您提到的
    (args)=>(…)
    表单实际上只是带有额外括号的表单#2(例如,如果返回对象文字,这可能是必需的,因为否则它将与表单#1不明确,并且它们是返回类似
    的JSX表达式的标准)

    如果您想做的不仅仅是
    return
    ing某事,您可以使用表单#1。否则,表格2就足够了


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

    在第一种情况下,您可以进行简单的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>); };
    
    const卡=(道具)=>{
    int x=2+3;//或某个foreach循环
    var profile=道具;
    返回(
    {profile.name}
    {profile.company}
    ); };
    
    但是在第二种情况下,您不能进行简单的javascript计算。它只返回JSX。因此,如果您想在返回JSX之前进行计算,请使用第一条底线。否则,使用第二个

    {}
    将创建一个代码块,并需要显式的
    返回
    ,而如果没有代码块,则会隐式返回后面的内容
    =>