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之前进行计算,请使用第一条底线。否则,使用第二个{}
将创建一个代码块,并需要显式的返回
,而如果没有代码块,则会隐式返回后面的内容=>