在 ReactJs 中单击按钮时加载新组件?

Posted

技术标签:

【中文标题】在 ReactJs 中单击按钮时加载新组件?【英文标题】:load a new component on button click in ReactJs? 【发布时间】:2020-08-21 18:17:09 【问题描述】:

【问题讨论】:

嗨,你能更深入地描述你的问题吗?也许你可以给出一些你目前的状态和你想要达到的目标 请给我一个解决方案,深度添加问题@WesleyLoh 【参考方案1】:

我已经修复了你的代码。请检查以下示例:

MasterCreate 组件

import MasterIncident from './MasterIncident';
import MasterAddPage from './MasterAddPage';
import React from "react";

class MasterCreate extends React.Component 
    state = 
        renderView: 0
    ;

    clickBtn = (value) => 
        this.setState(
            renderView: value
        );
    ;

    render() 
        switch (this.state.renderView) 
            case 1:
                return <MasterAddPage value="Master Add Page is added"/>;
            default:
                return <MasterIncident clickBtn=this.clickBtn/>;
        
    

export default MasterCreate;

MasterIncident 组件

import React from "react";

class MasterIncident extends React.Component 
    render() 
        console.log('master incident');
        return (
            <React.Fragment>
                <button
                    variant="contained"
                    size="medium"
                    color="primary"
                    value="single"
                    name="1"
                    onClick=() => this.props.clickBtn(0)
                >
                    Add
                </button>
                <button
                    variant="contained"
                    size="medium"
                    color="primary"
                    value="batch"
                    name="2"
                    onClick=() => this.props.clickBtn(1)
                >
                    Export
                </button>
                <h3>Master Incident Inventory</h3>
            </React.Fragment>
        );
    

export default MasterIncident;

MasterAddPage 组件

import React from "react";

const MasterAddPage = (props) => 
    console.log(props);
    return (
        <div>Content</div>
    )
;
export default MasterAddPage;

【讨论】:

我试过这段代码,但我遇到了同样的错误 TypeError: Class constructor MasterIncident cannot be invoked without 'new' @ssaran,我已经成功地从我的机器上运行了这段代码。请创建一个简单的组件来显示“hello world”并检查它是否在您的机器上运行。 另一个帮助大师添加页面如果点击进入大师事件页面,我有一个关闭按钮 @ssaran,这意味着您想在单击关闭按钮时返回。回去,你需要使用历史,你可以检查这个例子并可以实现它。 ***.com/questions/61643881/…【参考方案2】:

而不是这样做?

  render() 
    switch (this.state.renderView) 
      case 1:
        return <MasterAddPage />;
      default:
        return <MasterIncident clickBtn=this.clickBtn />;
    
  

你可以这样做:

  render() 
    return (
      this.state.renderView === 0 ? <MasterAddPage /> : <MasterIncident clickBtn=this.clickBtn />
    )
  

【讨论】:

以上是关于在 ReactJs 中单击按钮时加载新组件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 reactjs 中重新加载组件(“<Comment />)?

测试按钮单击 ReactJS 上是不是呈现另一个组件

单击按钮时Reactjs从firestore获取数据

ReactJS Ant Design - 单击按钮时打开 DatePicker

ReactJs:如何在启动时选择性地加载反应功能组件?

ReactJS:即使在重新渲染组件后复​​选框状态仍然存在