javascript - 在reactjs中使用按钮创建显示和隐藏部分

标签 javascript reactjs

我有三个按钮,当点击显示和单个div时,这是在reactjs中完成的

import React, { Component } from 'react';

export class ModeExtended extends Component {

constructor() {
    super();

    this.busButton = this.busButton.bind(this);
    this.trainButton = this.trainButton.bind(this);
    this.tramButton = this.tramButton.bind(this);

    this.state = {
        isHidden: false,
    }
}


busButton(){
    console.log('Bus Button Was Pressed');
    this.setState((prevState) => {
        return{
            isHidden: !prevState.isHidden
        };
    });
}

trainButton(){
    console.log('Train Button Was Pressed');
    this.setState((prevState) => {
        return{
            isHidden: !prevState.isHidden
        };
    });
}

    tramButton(){
    console.log('Tram Button Was Pressed');
    this.setState((prevState) => {
        return{
            isHidden: !prevState.isHidden
        };
    });
}


render() {
    return (
        <div>   
            <h5>Mode Extended</h5>

            <button onClick={this.busButton}>Bus</button>
            <button onClick={this.trainButton}>Train</button>
            <button onClick={this.tramButton}>Tram</button>





            {this.state.isHidden && (
                <div>
                    <h6>You can show Bus Data Now....</h6>
                </div>
            )}

            {this.state.isHidden && (
                <div>
                    <h6>You can show Train Data Now....</h6>
                </div>
            )}

            {this.state.isHidden && (
                <div>
                    <h6>You can show Tram Data Now....</h6>
                </div>
            )}


        </div>
    )
}
}

export default ModeExtended

当我单击任何按钮时,它会显示所有公共(public)汽车、有轨电车和火车数据 - 我如何让它们一次只显示一件事并确保其他州关闭。我真的在这里遗漏了一些东西,需要一个或两个或三个指针......

如何添加一个 ID 以使每个按钮彼此分开打开,当单击一个按钮时如何关闭其余的 div - 或打开状态,我在这里迷失了方向。请帮帮我。

一如既往地干杯!

这是一个REPL我的代码:

最佳答案

您需要有 3 个不同的 isHidden 属性来控制您的 div。你可以这样做:

this.state = {
    isHiddenBus: false,
    isHiddenTrain: false,
    isHiddenTram: false,
    }

然后在你的渲染中像这样:

{this.state.isHiddenBus && (
                <div>
                    <h6>You can show Bus Data Now....</h6>
                </div>
            )}

            {this.state.isHiddenTrain && (
                <div>
                    <h6>You can show Train Data Now....</h6>
                </div>
            )}

            {this.state.isHiddenTram && (
                <div>
                    <h6>You can show Tram Data Now....</h6>
                </div>
            )}

您的按钮也必须相应地更改为状态。

busButton(){
    console.log('Bus Button Was Pressed');
    this.setState((prevState) => {
        return{
            isHiddenBus: !prevState.isHiddenBus
            isHiddenTram: false
            isHiddenTrain: false
        };
    });
}

trainButton(){
    console.log('Train Button Was Pressed');
    this.setState((prevState) => {
        return{
            isHiddenTrain: !prevState.isHiddenTrain
            isHiddenBus: false
            isHiddenTram: false

        };
    });
}

    tramButton(){
    console.log('Tram Button Was Pressed');
    this.setState((prevState) => {
        return{
            isHiddenTram: !prevState.isHiddenTram
            isHiddenTrain: false
            isHiddenBus: false
        };
    });
}

关于javascript - 在reactjs中使用按钮创建显示和隐藏部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59262880/

相关文章:

javascript - 如何在 JavaScript 中为自定义对象创建方法?

javascript - 如何声明 useState() 初始值为 null,然后再给它一个对象值?

reactjs - react 选择多行标​​签

javascript - 将 "this"与另一个外部函数一起使用

javascript - 从数据对象设置多个标记 Google map

ReactJS 链接标签 - 未捕获的 ReferenceError : Link is not defined

javascript - React-helmet 元标签在页面更改时消失

javascript - react + REDUX : on redux state change mapStateToProps updating state but view is not rendering as per new state

javascript - 使用 promise 从数据库中获取身份值

javascript - 在 JavaScript 中将参数从一个函数传递到另一个函数