【问题标题】:Replace Parent component with Child component用子组件替换父组件
【发布时间】:2020-01-31 16:01:34
【问题描述】:

我想在单击某个按钮时隐藏父组件的内容或 JSX,并显示子组件的 JSX。

有两个组件ABCXYZ

期望的行为:当按钮被点击时,XYZ 组件应该呈现在与 className 侧边栏相同的 div 中,但组件 ABC 的 JSX 现在应该被隐藏。

目前,当我单击按钮时,XYZ 会呈现,而 ABC 仍然存在。

任何想法,我该如何实现?

class ABC extends React.Component {
  render() {
    <div className="sidebar">
     <h1>This is component ABC</h1>
    </div>
  }
}

class XYZ extends React.Component {
  render() {
    <div className="sidebar">
      <h1>Replaced by XYZ</h1>
    </div>
  }
}

【问题讨论】:

  • 使用条件渲染 buttonClick === true ? XYZ:ABC

标签: javascript reactjs


【解决方案1】:

您可以渲染&lt;XYZ /&gt;&lt;ABC /&gt; 取决于isClicked 标志。

以下代码展示了如何在特定条件下渲染每个子组件。

class Parent extends React.Component {
  state = { isClicked: false };
  render() {
    <div className="sidebar">
      { this.tate.isClicked ? <XYZ /> : <ABC /> }
    </div>
  }
}

那么你需要更新父组件中的isClicked标志。

【讨论】:

  • @Antonia 实际上,ABC 是 XYZ 的父组件。它已经有了一些按钮。单击按钮时,我只想将 ABC 的

    替换为 XYZ 的

    保留在同一 div 中。

  • @Meana 不使用子节点的条件渲染,需要考虑 DOM 操作。但不推荐在 react js 中使用。即使您在&lt;XYZ /&gt; 中有更改标志的按钮,您也可以使用条件渲染来做到这一点。
猜你喜欢
  • 2021-02-09
  • 2017-07-12
  • 2017-09-07
  • 1970-01-01
  • 2018-04-18
  • 2020-09-24
  • 1970-01-01
  • 2019-03-19
  • 2021-01-18
相关资源
最近更新 更多