React에서 모달 만들기.
20783 단어 reactjavascript
전제 조건
다음은 이 자습서를 수행하는 데 필요한 전제 조건입니다.
초기 설정
프로젝트의 루트 디렉터리에서 아래 명령을 실행하여 프로젝트를 초기화하면 프로젝트를 시작하는 데 필요한 라이브러리와 도구가 설치됩니다.
create-react-app basic-modal
구성 요소 구축
구성 요소를 생성하거나 코드를 작성하기 전에 아래 단계에 따라 원하지 않는 파일을 삭제하고 프로젝트에 필요한 파일도 생성하십시오.
이렇게 하면 프로젝트 구조가 다음과 유사해야 합니다.
Modal.js
구성 요소 폴더에서 Modal.js 파일을 열고 다음 코드를 추가합니다.
import React from 'react';
import './Modal.css';
const modal = (props) => {
return (
<div>
<div className="modal-wrapper"
style={{
transform: props.show ? 'translateY(0vh)' : 'translateY(-100vh)',
opacity: props.show ? '1' : '0'
}}>
<div className="modal-header">
<h3>Modal Header</h3>
<span className="close-modal-btn" onClick={props.close}>×</span>
</div>
<div className="modal-body">
<p>
{props.children}
</p>
</div>
<div className="modal-footer">
<button className="btn-cancel" onClick={props.close}>CLOSE</button>
<button className="btn-continue">CONTINUE</button>
</div>
</div>
</div>
)
}
export default modal;
모달 구성 요소에는 다음 세 가지props가 있습니다.
모달 구성 요소는 모달의 내용을 구성 요소의 자식으로 받는 기능적 구성 요소입니다. 모달 바닥글에는 클릭 시 모달을 닫는 기능을 실행하는 버튼도 포함되어 있습니다. 이 함수는 모달 구성 요소에 소품으로 전달됩니다. modal-wrapper div의 인라인 스타일에는 show props의 부울 값에 따라 모달의 가시성 상태 값을 설정하는 조건문이 포함되어 있습니다.
모달.css
모달 구성 요소에 스타일을 추가하려면 Modal.css 파일에 다음 코드를 추가합니다.
.modal-wrapper {
background: white;
border: 1px solid #d0cccc;
box-shadow: 0 5px 8px 0 rgba(0,0,0,0.2), 0 7px 20px 0 rgba(0,0,0,0.17);
margin: 100px auto 0;
transition: all .8s;
width: 60%;
}
.modal-header {
background: #263238;
height: 40px;
line-height: 40px;
padding: 5px 20px;
text-align: right;
}
.modal-header h3 {
color: white;
float: left;
margin: 0;
padding: 0;
}
.modal-body {
padding: 10px 15px;
text-align: center;
}
.modal-footer {
background: #263238;
height: 35px;
padding: 15px;
}
.close-modal-btn {
color: white;
cursor: pointer;
float: right;
font-size: 30px;
margin: 0;
}
.close-modal-btn:hover {
color: black;
}
.btn-cancel, .btn-continue {
background: coral;
border: none;
color: white;
cursor: pointer;
font-weight: bold;
outline: none;
padding: 10px;
}
.btn-cancel {
background-color: #b71c1c;
float: left;
}
.btn-continue {
background-color: #1b5e20;
float: right;
}
.back-drop {
background-color: rgba(48, 49, 48, 0.42);
height: 100%;
position: fixed;
transition: all 1.3s;
width: 100%;
}
.open-modal-btn {
margin: 15px;
padding: 10px;
font-weight: bold;
}
App.js
import React, { Component } from 'react';
import Modal from './components/Modal/Modal';
class App extends Component {
constructor() {
super();
this.state = {
isShowing: false
}
}
openModalHandler = () => {
this.setState({
isShowing: true
});
}
closeModalHandler = () => {
this.setState({
isShowing: false
});
}
render () {
return (
<div>
{ this.state.isShowing ? <div onClick={this.closeModalHandler} className="back-drop"></div> : null }
<button className="open-modal-btn" onClick={this.openModalHandler}>Open Modal</button>
<Modal
className="modal"
show={this.state.isShowing}
close={this.closeModalHandler}>
Maybe aircrafts fly very high because they don't want to be seen in plane sight?
</Modal>
</div>
);
}
}
export default App;
App.js 파일에는 다음과 같은 두 가지 사용자 지정 함수가 포함되어 있습니다.
render 메서드에서 배경 div는 모달의 가시성을 기반으로 동적으로 추가되며 onClick 리스너도 div에 전달되어 모달의 열기 및 닫기를 제어할 수 있습니다. 모달 열기를 제어하기 위해 onClick 리스너와 함께 버튼도 추가되었습니다.
이전에 있던 모달 구성 요소를 가져와 전달된 props의 값과 함께 렌더링 메서드에서 사용합니다.
모달 테스트
모달을 보려면 프로젝트의 루트 디렉토리에서 npm start를 실행하십시오.
Project Repo
감사.
Reference
이 문제에 관하여(React에서 모달 만들기.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/achowba/building-a-modal-in-react-15hg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)