我正在使用javascript React(我是新手(。在我的主页上,我想单击一个按钮以打开一个对话框窗口,以允许用户输入一些值。
我发现了模态窗口,所以我在分析了一些示例后尝试生成一个,但现在没有任何反应......
我试过这段代码:
我的主页,环境.js :
import React, { Component } from 'react'
import { ReactLoader } from 'Loader'
import Modal from './Modal';
class EnvironmentExtension extends ModelExtension {
constructor (viewer, options) {
super (viewer, options)
this.state = { isModalOpen: false };
this.openModal = this.openModal.bind(this)
this.closeModal = this.closeModal.bind(this)
this.react = options.react }
openModal = () => {
this.react.setState({isModalOpen: true});
console.log("openModal()");
console.log('state modal');
console.log(this.state.isModalOpen)}
closeModal = () => {
this.react.setState({isModalOpen: false});
console.log("closeModal()");
console.log('state modal');
console.log(this.state.isModalOpen)
}
render () {
return (
<button onClick={() => this.openModal()}
title="Show map dialog :O">
<span className="fa fa-hand-o-left"/>
</button>
<Modal isOpen={this.state.isModalOpen} onClose={()=>this.closeModal()}>
content for modal
<button onClick={()=> this.closeModal()}>
Close
</button>
</Modal> )}
对于模态文件,模态.js:
import React from 'react';
import PropTypes from 'prop-types';
class Modal extends React.Component {
render() {
if(!this.props.isOpen) {
return null;
}
// The gray background
const backdropStyle = {
position: 'fixed',
top: 0,
bottom: 0,
left: 0,
right: 0,
backgroundColor: 'rgba(0,0,0,0.3)',
padding: 50};
// The modal "window"
const modalStyle = {
backgroundColor: '#fff',
borderRadius: 5,
maxWidth: 500,
minHeight: 300,
margin: '0 auto',
padding: 30};
return (
<div className="backdrop">
<div className="modal">
{this.props.children}
<div className="footer">
<button onClick={this.props.onClose}>
Close
</button>
</div>
</div>
</div>
);
}
}
Modal.propTypes = {
onClose: PropTypes.func.isRequired,
onOpen: PropTypes.bool,
children: PropTypes.node
};
export default Modal;
当我运行代码时,我收到此错误:
警告:未知道具
isOpen
,onClose
标签上。从元素中删除这些道具
当我单击应该打开对话框的按钮时,页面中间显示文本"模态内容"以及"取消"按钮。而且,在控制台中,布尔值是ModalOpen总是假的......根本没有显示对话框...
两件事。
首先,我不确定你的警告来自哪里,但看看这个:https://reactjs.org/warnings/unknown-prop.html。也许您有一个未大写的用户定义组件(您发布的代码中可能缺少该组件(。
其次,听起来您的模态正在正确打开和关闭,并且您实际上遇到了 CSS 问题。在 modalStyle
上,添加以下内容:
position:absolute
top:50%;
left:50%;
transform:translate(-50%, -50%);
width:400px;
height:300px;
这应该给你一个起点。
在相关的说明中,在学习 React 组件样式时,尝试使用 UI 工具包,例如语义 (https://react.semantic-ui.com(。