javascript - 在按钮单击事件上渲染 React 组件

标签 javascript reactjs buttonclick

我有一个极简主义的着陆页,其中包含两个文本和一个 div,其中包含两个按钮。单击这些按钮之一,我想呈现 App 组件。

这是我到目前为止尝试过的:

import React from 'react';
import App from '../App';

export default class Landing extends React.Component {

constructor(){
    super();
}

launchMainWithoutProps = () => {
    return (<App />)
};

showAppMain =() => {
    console.log('Silk board clicked');
    this.launchMainWithoutProps();
};   

render() {
    return (
        <div className='landing'>
            <div className="centered">
                <div className="introText">
                    <h3>Welcome to KahanATM</h3>
                    <h5>A Simple Web App with React to find ATMs closest to you (3km radius) or from Silk Board Flyover</h5>
                </div>

                <div className="buttonsLayout">

                    <button
                        className='getLocation'
                        onClick={this.showAppMainWithLocation}>
                        Get My Location
                    </button>

                    <button
                        className='silkBoard'
                        onClick={this.showAppMain}>
                        Central Silk Board
                    </button>
                </div>
            </div>
        </div>
    );
}

}

但是当单击按钮时,只有日志显示在控制台中。我如何使用或不使用 react-router 来执行此操作,因为我认为这太小而无法在其中实现路由。谢谢。

最佳答案

在您所在的州使用 bool 标志。当你点击并执行showAppMain将状态变量设置为 true,这会导致渲染函数返回 <App />相反:

import React from 'react';
import App from '../App';

export default class Landing extends React.Component {

    constructor() {
        super();

        this.state = {
            shouldShowMain: false,
        };

        this.showAppMain = this.showAppMain.bind(this);
    }

    showAppMain() {
        console.log('Silk board clicked');
        this.setState({shouldShowMain: true});
    };   

    render() {
        if (this.state.shouldShowMain) {
            return (<App />);
        }

        return (
            <div className='landing'>
                <div className="centered">
                    <div className="introText">
                        <h3>Welcome to KahanATM</h3>
                        <h5>A Simple Web App with React to find ATMs closest to you (3km radius) or from Silk Board Flyover</h5>
                    </div>

                    <div className="buttonsLayout">

                        <button
                            className='getLocation'
                            onClick={this.showAppMainWithLocation}>
                            Get My Location
                        </button>

                        <button
                            className='silkBoard'
                            onClick={this.showAppMain}>
                            Central Silk Board
                        </button>
                    </div>
                </div>
            </div>
        );
    }
}

关于javascript - 在按钮单击事件上渲染 React 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52932415/

相关文章:

Javascript 添加了多个 Bootstrap Select div 不工作

reactjs - 如何使用 MuiCssBaseline 和 styleOverrides 应用全局背景颜色

javascript - 如何从地址获取纬度和经度并将其传递给 react 传单?

javascript - 使用 ReactJS 将 formData 发送到 Express API 并获取响应的 JSON

android - 单键多 Action 顺序

javascript - 单击发送按钮时如何在 "given text"上附加文本区域。?

javascript - vuejs 如何更改组件的输入值

c# - AJAX + ASP.net 从 Sql Server 检索数据?

javascript - jquery复制没有子内容的html内容

javascript 将 Canvas 裁剪为内容