在反应中添加子组件

Posted

技术标签:

【中文标题】在反应中添加子组件【英文标题】:Adding child components in react 【发布时间】:2021-04-21 18:56:26 【问题描述】:

我想在Wrapper 组件的demo 元素中添加子元素

function Wrapper() 
    return (
        <div className="demo">Something</div>
    )

<Wrapper>
    <span>This is something</span>
</Wrapper>

但这不起作用! 这样做的正确方法是什么?

【问题讨论】:

demo 元素在哪里? 【参考方案1】:

您可以使用children prop 来做到这一点

function Wrapper(children) 
    return (
        <div className="demo">children</div>
    )

【讨论】:

【参考方案2】:

简单的方法是拨打props.children

function Wrapper(props) 
  return (
      <div className="demo">props.children</div>
  )

ReactDOM.render(
  <Wrapper>
      <span>This is something</span>
  </Wrapper>
, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

<div id="root" ></div>

从@Soroush Chehresa 对What is this.props.children and when you should use it? 的回答中说:

this.props.children 的作用是它被用来显示你想要的任何东西 调用组件时在开始标签和结束标签之间包含

【讨论】:

【参考方案3】:

将您的包装器组件更改为:

function Wrapper( children ) 
  return (
    <>
      <div className="demo">Something</div>
      children
    </>
  );

【讨论】:

【参考方案4】:

就像在你的包装函数中一样,只需添加子作为参数,因为包装函数需要消耗一些东西来为你提供一些东西,所以只需将子传递给包装函数,它在内部呈现你的子作为参数传递

function Wrapper(children) 
    return (
        <div className="demo">children</div>
    )

【讨论】:

以上是关于在反应中添加子组件的主要内容,如果未能解决你的问题,请参考以下文章

通过子组件在父组件中反应切换视图功能

在反应中从父dom节点中删除子组件

反应多个子组件的条件渲染

无法从父反应组件调用子反应组件的属性

如何在反应中将子组件的状态数组传递给父组件?

限制反应组件中的子组件