簡體   English   中英

當我與孩子一起工作時,如何省略`React.Fragment`?

[英]How I can omit `React.Fragment` when I work with children?

我正在使用簡單的反應元素結構:

...
<ComponentWrapper>
  <FirstComponent />
  <SecondComponent />
  <ThirdComponent />
</ComponentWrapper>
...

在我的ComponentWrapper中,我想與所有孩子一起工作,但在我的FirstComponent中,我有這樣一個結構:

const FirstComponent = () => {
  return <>
   <Subcomponent />  
   <Subcomponent />
   <Subcomponent />
  </>

因此,在ComponentWrapper的這個結構中,我只有 3 個孩子,但實際上我必須從FirstComponent獲得 5 個孩子,從第二個和第三個組件獲得 2 個孩子。

可能有人知道如何省略React.Fragment並從第一個組件中獲得 3 個孩子?

您可以將要在Firstcomponent中呈現的任何組件添加到數組中。 然后返回該數組,就像這樣

export default function FirstComponent () {
  const x = [];
  x.push(<p>Hello</p>);
  x.push(<p>Hello</p>);
  x.push(<Subcomponent/>);
  x.push(<Subcomponent/>);

  return x;
}

或者不是將它們推入數組然后返回數組,而是直接像這樣返回它

return [
    <p>Hello</p>,
    <p>Hello</p>,
    <Subcomponent/>,
    <Subcomponent/>
  ]

您可能還必須為每個元素提供一個關鍵道具。 另請注意,使用反應片段總是更好。 反應文檔有一個部分提到了這一點: link

為什么要指定一個 wrap 元素:<div> 或者<react.fragment>或 JSX 中的 &lt;&gt; 返回?</react.fragment></div><div id="text_translate"><p> 我看到 React 在返回多個元素的 JSX 代碼時會引發錯誤,因此它需要始終使用以下 3 個選項包裝這些元素:</p><pre> &lt;&gt; &lt;React.Fragment&gt; &lt;div&gt;</pre><p> 例如這個有效:</p><pre> const myReactComponent = () =&gt; { return ( &lt;div&gt; &lt;div&gt;Div 1&lt;/div&gt; &lt;div&gt;Div 2&lt;/div&gt; &lt;/div&gt; ) }</pre><p> 代替:</p><pre> const myReactComponent = () =&gt; { return ( &lt;div&gt;Div 1&lt;/div&gt; &lt;div&gt;Div 2&lt;/div&gt; ) }</pre></div>

[英]Why should I specify a wrap element: <div> or <React.Fragment> or <> in JSX returns?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM