介绍
模式是应用程序中的独立窗口,最常见的是作为对话框。它们是用于提供信息或要求确认的常见用户界面模式。
在本教程中,您将学习如何在 React 项目中实现模态组件。您将创建一个Dashboard
组件来管理状态和一个按钮来访问模态。您还将开发一个Modal
组件来构建一个模态和一个关闭按钮。单击按钮后,您的项目将显示并关闭模态。
先决条件
要完成本教程,您需要:
- 在开始本教程之前对 React 有一个基本的了解。您可以通过阅读如何在 React.js系列中编码来了解有关 React 的更多信息。
第 1 步 – 启动Dashboard
组件
仪表板是您显示模态的地方。要开始您的仪表板,请将 React 实例和Component
对象导入到您的Dashboard.js
文件中。声明一个Dashboard
组件并设置您的状态:
import React, { Component } from "react";
class Dashboard extends Component {
constructor() {
super();
this.state = {
show: false
};
this.showModal = this.showModal.bind(this);
this.hideModal = this.hideModal.bind(this);
}
showModal = () => {
this.setState({ show: true });
};
hideModal = () => {
this.setState({ show: false });
};
}
export default Dashboard
您的州包括show
价值为的财产false
。这允许您隐藏模式,直到用户提示它打开。这些函数showModal()
使用.setState()
方法更新您的状态,以将您的show
属性值更改true
为用户打开模态时的状态。同样,函数中的.setState()
方法hideModal()
将关闭模态并将show
属性中的值更改为false
。
注意:请记住在constructor()
using.bind()
方法上绑定您的函数。
一旦你应用了你的状态和函数,你的render()
生命周期方法将处理在return()
语句中显示你的模式:
import React, { Component } from "react";
class Dashboard extends Component {
// ...
render() {
return (
<main>
<h1>React Modal</h1>
<button type="button" onClick={this.showModal}>
Open
</button>
</main>
);
}
}
export default Dashboard
在button
接受阵营JSX属性onClick
应用.showModal()
功能,并打开模式。您将Dashboard
组件导出到App
连接到根 HTML 文件的高阶组件。
第 2 步 – 构建Modal
组件
创建一个新文件,Modal.js
并声明一个Modal
带有三个参数的无状态功能组件handleClose
,show
、 和children
。该参数show
表示show
您所在州的属性:
import './modal.css';
const Modal = ({ handleClose, show, children }) => {
const showHideClassName = show ? "modal display-block" : "modal display-none";
return (
<div className={showHideClassName}>
<section className="modal-main">
{children}
<button type="button" onClick={handleClose}>
Close
</button>
</section>
</div>
);
};
您的return()
语句传递参数children
,表示为props.children
,是对打开和关闭模态功能的引用。模态还包含一个带有 React JSXonClick
属性的按钮,该属性接受该hideModal()
方法,此处表示为参数handleClose
,作为道具传递到您的Dashboard
组件中。
该变量showHideClassName
为其值分配一个条件,以检查show
您所在州的属性值是否为true
。如果是这样,模态将出现。否则,模态将隐藏。属性display-block
以及display-none
显示和隐藏模式是通过modal.css
导入到Modal
组件中的文件来处理的。
启动一个新文件,modal.css
并设置规则来设置您的大小、颜色和形状的样式Modal
:
.modal {
position: fixed;
top: 0;
left: 0;
width:100%;
height: 100%;
background: rgba(0, 0, 0, 0.6);
}
.modal-main {
position:fixed;
background: white;
width: 80%;
height: auto;
top:50%;
left:50%;
transform: translate(-50%,-50%);
}
.display-block {
display: block;
}
.display-none {
display: none;
}
这将产生一个带有白框轮廓和阴影背景的居中模式。Modal
完成您的组件后,让我们将您的组件集成到您的Dashboard
.
第 3 步 – 合并Modal
组件
要将您的 组合Modal
到您的 中Dashboard
,请导航到您的Dashboard.js
文件并Modal
在 React 实例化下方导入您的组件:
import React, { Component } from "react";
import Modal from './Modal.js';
class Dashboard extends Component {
// ...
render() {
return (
<main>
<h1>React Modal</h1>
<Modal show={this.state.show} handleClose={this.hideModal}>
<p>Modal</p>
</Modal>
<button type="button" onClick={this.showModal}>
Open
</button>
</main>
);
}
}
export default Dashboard
在您的return()
语句中,包含您的Modal
组件以显示和隐藏模式。属性show
和handleClose
是来自Modal
组件的道具,用于管理状态和hideModal()
函数的逻辑。
您的Dashboard
和Modal
组件现在将在您的浏览器上呈现:
观察您的新Modal
组件现在如何打开和关闭。
结论
在本教程中,您了解了如何通过将 props 和功能从一个组件传递到另一个组件来使用 React 来实现模态。
要实时查看该项目,这里是该项目的CodePen 演示。