Javascript 功能组件的允许语法';你的返回声明?(反应)
今天在阿波罗文档中发现了以下代码。我认为当你在一个功能组件中有一个多行返回语句时,你必须把所有内容都用括号括起来?因此,在return之后立即打开括号,如下所示:Javascript 功能组件的允许语法';你的返回声明?(反应),javascript,reactjs,jsx,Javascript,Reactjs,Jsx,今天在阿波罗文档中发现了以下代码。我认为当你在一个功能组件中有一个多行返回语句时,你必须把所有内容都用括号括起来?因此,在return之后立即打开括号,如下所示:return() 我不明白为什么这个返回语句有效: export default function ExchangeRates() { const { loading, error, data } = useQuery(EXCHANGE_RATES); if (loading) return <p>Loading.
return(
)
我不明白为什么这个返回语句有效:
export default function ExchangeRates() {
const { loading, error, data } = useQuery(EXCHANGE_RATES);
if (loading) return <p>Loading...</p>;
if (error) return <p>Error :(</p>;
return data.rates.map(({ currency, rate }) => (
<div key={currency}>
<p>
{currency}: {rate}
</p>
</div>
));
}
导出默认函数ExchangeRates(){
const{loading,error,data}=useQuery(汇率);
如果(加载)返回加载…;
if(error)返回错误:(;
返回data.rates.map({currency,rate})=>(
{货币}:{汇率}
));
}
编辑:建议的答案并没有回答我的问题。我希望你能给出一个同样针对JSX的答案。例如,有人说()甚至没有必要在这里包装JSX,所以我特别困惑,为什么这篇文章中的内容要在()中包含一个多行返回语句.可能是因为多行jsx已经包装在Map中,这是否回答了您的问题?@cheznead它通常用于防止,在您的示例中,没有必要,因为JavaScript没有歧义。只有当
return
语句单独在它的行中时,多行才需要它。我不会说它是相反的cts没有任何问题,但我同意这个具体的答案没有解释为什么。它解释了为什么。术语multiline在您的案例中是误导性的,因为您的示例确实跨越了多行,尽管他们谈论的multiline是当返回值开始于return
关键字下面的行时。啊,好的,谢谢我想我现在明白了。所以若你们添加一个换行符,你们需要在return关键字之后引入(右),但若你们在return之后开始语句,你们就不需要它了。