当我在React中按下按钮时,如何使其仅显示特定的模态?

约阿希姆

当前正在尝试在React中制作模态,并且想要创建一个网格,其中“按钮1”显示“模态1”,“按钮2”显示“模态2”等。当我按下按钮以显示模态时,它同时显示了模式1和模式2。如何设置按钮1仅打开模式1?

这是我的App.js:

import React from 'react';
import './main.css';
import Modal from './components/Modal/modal';

class App extends React.Component {
  state = {
    show: false
  };

  showModal = x => {
    this.setState({
      show: !this.state.show
    });
  };

  render() {
    return (
      <div>
        <div className="button-container">
          <button className="toggle-button" onClick={x => {
            this.showModal(x);
          }}>Show yourself Modal!</button>
        </div>
        <Modal onClose={this.showModal} show={this.state.show} title="Test modal 1" id="1">Lorem ipsum</Modal>
        <Modal onClose={this.showModal} show={this.state.show} title="Test modal 2" id="2">I am a different modal</Modal>
      </div>
    );
  }
}

export default App;

这是我的modal.js组件:

import React, { Component } from 'react';
import PropTypes from 'prop-types';
import './modal.css';

export default class Modal extends Component {
    onClose = x => {
        this.props.onClose && this.props.onClose(x);
    };

    render() {
        if(!this.props.show) {
            return null;
        }

        return (
            <div className="modal-wrapper">
                <h2 className="modal-header">{this.props.title}</h2>
                <div>{this.props.children}</div>
                <div>
                    <button className="modal-close" onClick={this.onClose}></button>
                </div>
            </div>
        )
    }
}

Modal.propTypes = {
    onClose: PropTypes.func.isRequired,
    show: PropTypes.bool.isRequired
};
布赖恩·汤普森

最简单的方法是在状态中添加第二个键,这样您就可以独立管理两个模式。

class App extends React.Component {
  state = {
    show1: false,
    show2: false
  };

然后,将您的change函数变成一个咖喱函数,接受一个参数来更新状态的正确部分。为了使用变量访问对象键,我们需要将其作为数组访问,如下所示:

  showModal = (modal) => (e) => {
    this.setState({
      [modal]: !this.state[modal]
    });
  };

然后像这样使用它:

  render() {
    return (
      <div>
        <div className="button-container">
          <button className="toggle-button" onClick={this.showModal('show1')}>Show yourself Modal 1!</button>
          <button className="toggle-button" onClick={this.showModal('show2')}>Show yourself Modal 2!</button>
        </div>
        <Modal onClose={this.showModal('show1')} show={this.state.show1} title="Test modal 1" id="1">Lorem ipsum</Modal>
        <Modal onClose={this.showModal('show2')} show={this.state.show2} title="Test modal 2" id="2">I am a different modal</Modal>
      </div>
    );
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当我按下另一个按钮时,如何显示按下按钮的视觉效果?

来自分类Dev

当我按下指定图像的按钮时,如何使图像不可见但显示?

来自分类Dev

当我按下指定图像的按钮时,如何使图像不可见但显示?

来自分类Dev

在bootstrapvalidation中按下取消按钮时如何隐藏模态

来自分类Dev

当我在angularJS中按下按钮时如何更改变量?

来自分类Dev

当我在C ++ / SFML中按下鼠标按钮时如何绘制球

来自分类Dev

每当我在JavaScript中按下按钮时,如何生成唯一的ID

来自分类Dev

当我在班级的Python Tkinter中按下按钮时如何删除条目

来自分类Dev

仅当我释放(而不是按下)鼠标按钮时,右键单击才会注册

来自分类Dev

当我在当前活动中按下按钮时如何更改下一个活动背景

来自分类Dev

当我在UIView类中按下按钮时,我想触发navigationcontroller

来自分类Dev

为什么当我在 JavaScript 中按下按钮时我的粒子会加速?

来自分类Dev

在JavaFX中按下按钮时如何显示图像

来自分类Dev

当我按下按钮时,屏幕旋转

来自分类Dev

当我按下按钮时,出现错误ViewRootImpl $ CalledFromWrongThreadException

来自分类Dev

当我按下按钮时,CheckBox不起作用

来自分类Dev

当我按下按钮时,Smooch会崩溃

来自分类Dev

当我按下按钮时程序冻结

来自分类Dev

当我按下按钮时,打印用户坐标-Swift

来自分类Dev

当我按下 A 按钮时“不幸的是 MyApp 已停止”

来自分类Dev

当我按下按钮时没有调用方法

来自分类Dev

如何使其无法到达数组中的最后一个元素时按下按钮

来自分类Dev

当我按下返回按钮时如何停止ListView再次加载?

来自分类Dev

当我按下输入按钮时,如何触发onclick功能?

来自分类Dev

每当我按下按钮时,如何制作一个刷新的面板?

来自分类Dev

当我按下后退按钮时如何使用onResume和onPause方法

来自分类Dev

当我按下按钮并在屏幕上打印时如何获取EditText的值

来自分类Dev

当我按下输入按钮时,如何触发onclick功能?

来自分类Dev

当我按下“设置”按钮时如何从输入字段设置值

Related 相关文章

  1. 1

    当我按下另一个按钮时,如何显示按下按钮的视觉效果?

  2. 2

    当我按下指定图像的按钮时,如何使图像不可见但显示?

  3. 3

    当我按下指定图像的按钮时,如何使图像不可见但显示?

  4. 4

    在bootstrapvalidation中按下取消按钮时如何隐藏模态

  5. 5

    当我在angularJS中按下按钮时如何更改变量?

  6. 6

    当我在C ++ / SFML中按下鼠标按钮时如何绘制球

  7. 7

    每当我在JavaScript中按下按钮时,如何生成唯一的ID

  8. 8

    当我在班级的Python Tkinter中按下按钮时如何删除条目

  9. 9

    仅当我释放(而不是按下)鼠标按钮时,右键单击才会注册

  10. 10

    当我在当前活动中按下按钮时如何更改下一个活动背景

  11. 11

    当我在UIView类中按下按钮时,我想触发navigationcontroller

  12. 12

    为什么当我在 JavaScript 中按下按钮时我的粒子会加速?

  13. 13

    在JavaFX中按下按钮时如何显示图像

  14. 14

    当我按下按钮时,屏幕旋转

  15. 15

    当我按下按钮时,出现错误ViewRootImpl $ CalledFromWrongThreadException

  16. 16

    当我按下按钮时,CheckBox不起作用

  17. 17

    当我按下按钮时,Smooch会崩溃

  18. 18

    当我按下按钮时程序冻结

  19. 19

    当我按下按钮时,打印用户坐标-Swift

  20. 20

    当我按下 A 按钮时“不幸的是 MyApp 已停止”

  21. 21

    当我按下按钮时没有调用方法

  22. 22

    如何使其无法到达数组中的最后一个元素时按下按钮

  23. 23

    当我按下返回按钮时如何停止ListView再次加载?

  24. 24

    当我按下输入按钮时,如何触发onclick功能?

  25. 25

    每当我按下按钮时,如何制作一个刷新的面板?

  26. 26

    当我按下后退按钮时如何使用onResume和onPause方法

  27. 27

    当我按下按钮并在屏幕上打印时如何获取EditText的值

  28. 28

    当我按下输入按钮时,如何触发onclick功能?

  29. 29

    当我按下“设置”按钮时如何从输入字段设置值

热门标签

归档