簡體   English   中英

反應嵌套 3 個組件的打開和關閉標簽,當標簽內的元素未呈現時

[英]react nesting 3 components opening and closing tag where when the element inside the tag isnt rendered

我在這里發現了一個類似的問題: React component Closed tag但我仍然很困惑......

為什么當我這樣做時它不起作用? innertherinner 不會被渲染。

function Outer(props) {
  return (
    <Inner>
      <InnerTheInner />
    </Inner>
  )
}

function Inner(props) {
  return (
    <>

    </>
  )
}

function InnerTheInner() {
  return (
    <>
      innertheinner
    </>
  )
}

ReactDOM.render(
  <React.StrictMode>
    <Outer user='nishi' avatar='avatar photo' />
  </React.StrictMode>,
  document.getElementById('root')
);

是不是等同於這個:

<Outer>
  <Inner>
    <InnerTheInner>
        InnerTheInner
      </InnerTheInner>
  </Inner>
</Outer>

你需要

function Inner(props) {
  return <>{props.children}</>;
}

否則它只會始終呈現

  return (
    <>

    </>
  )

結帳https://reactjs.org/docs/composition-vs-inheritance.html

事實上,您正在使用Inner組件渲染一個空 Fragment - 沒有任何子節點。 React 組件不會在內部渲染其子組件,除非您明確告訴它們這樣做:

function Inner(props) {
  return (
    <>
      {props.children}
    </>
  )
}

這樣,在<Inner>內部傳遞的每個組件都將被渲染(因為它是children屬性的一部分)。

您也可以簡化它,因為根本不需要使用 Fragment,只需返回props.children就可以了。

function Inner(props) {
  return props.children
}

暫無
暫無

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

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