无法从另一个组件打开模态组件
failes to open modal component from another component
我正在尝试从另一个组件(扩展 React.PureComponent)打开模式(扩展组件)React.PureComponent。
我是 React 新手,javascript 所以也许我的问题已经是混合这些组件类型了?
老实说,我在 TSX 文件中使用一个组件,在 JS 文件中使用另一个组件。
也许这太麻烦了?
最重要的是,使用此代码后:
内部第一个组件 Modal.js:
import React, {Component} from 'react'
import {Modal, Button, Row, Col, Form} from 'react-bootstrap';
export class AddModal extends Component {
constructor(props) {
super(props);
}
render(){
return(
<Modal
{...this.props}
size="lg"
aria-labelledby="contained-modal-title-vcenter"
centered
>
<Modal.Header closeButton>
<Modal.Title id="contained-modal-title-vcenter">
Modal heading
</Modal.Title>
</Modal.Header>
<Modal.Body>
<h4>Centered Modal</h4>
<p>
Cras mattis consectetur purus sit amet fermentum. Cras justo odio,
dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac
consectetur ac, vestibulum at eros.
</p>
</Modal.Body>
<Modal.Footer>
<Button onClick={this.props.onHide}>Close</Button>
</Modal.Footer>
</Modal>
);
}
}
第二个组件部分相关代码
import React from 'react';
import './App.scss';
import {createApiClient, Ticket} from './api';
import {AddModal} from './Modal'
import {Button} from 'react-bootstrap';
export type AppState = {
tickets?: Ticket[],
search: string,
hidden: number,
show: boolean,
see_more : boolean[],
addModalShow : boolean
}
const api = createApiClient();
export class App extends React.PureComponent<{}, AppState> {
state: AppState = {
tickets: [],
search: '',
hidden : 0,
show : false,
see_more : [],
addModalShow : false
};
addModalClose = () => {
this.setState( {
addModalShow : false
});
}
addModalOpen = () => {
this.setState( {
addModalShow : true
});
}
<Button id="button" className="add_ticket" onClick={this.addModalOpen}>New Ticket</Button>
<AddModal
show={this.state.addModalShow}
onHIde={this.addModalClose}
/>
按下按钮后我得到的是:
它实际上位于第一个组件之上。
知道这里有什么问题吗?
这是因为您的 bootstrap CSS 样式不起作用!!!
首先你需要
使用 NPM 安装 Bootstrap
npm install --save bootstrap
现在将 bootstrap 导入项目的任何位置(建议在最顶部的组件中),这适用于我的情况。
import 'bootstrap/dist/css/bootstrap.css';
CSS 样式将开始工作。 :)
祝您编程愉快!
我正在尝试从另一个组件(扩展 React.PureComponent)打开模式(扩展组件)React.PureComponent。
我是 React 新手,javascript 所以也许我的问题已经是混合这些组件类型了?
老实说,我在 TSX 文件中使用一个组件,在 JS 文件中使用另一个组件。
也许这太麻烦了?
最重要的是,使用此代码后:
内部第一个组件 Modal.js:
import React, {Component} from 'react'
import {Modal, Button, Row, Col, Form} from 'react-bootstrap';
export class AddModal extends Component {
constructor(props) {
super(props);
}
render(){
return(
<Modal
{...this.props}
size="lg"
aria-labelledby="contained-modal-title-vcenter"
centered
>
<Modal.Header closeButton>
<Modal.Title id="contained-modal-title-vcenter">
Modal heading
</Modal.Title>
</Modal.Header>
<Modal.Body>
<h4>Centered Modal</h4>
<p>
Cras mattis consectetur purus sit amet fermentum. Cras justo odio,
dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac
consectetur ac, vestibulum at eros.
</p>
</Modal.Body>
<Modal.Footer>
<Button onClick={this.props.onHide}>Close</Button>
</Modal.Footer>
</Modal>
);
}
}
第二个组件部分相关代码
import React from 'react';
import './App.scss';
import {createApiClient, Ticket} from './api';
import {AddModal} from './Modal'
import {Button} from 'react-bootstrap';
export type AppState = {
tickets?: Ticket[],
search: string,
hidden: number,
show: boolean,
see_more : boolean[],
addModalShow : boolean
}
const api = createApiClient();
export class App extends React.PureComponent<{}, AppState> {
state: AppState = {
tickets: [],
search: '',
hidden : 0,
show : false,
see_more : [],
addModalShow : false
};
addModalClose = () => {
this.setState( {
addModalShow : false
});
}
addModalOpen = () => {
this.setState( {
addModalShow : true
});
}
<Button id="button" className="add_ticket" onClick={this.addModalOpen}>New Ticket</Button>
<AddModal
show={this.state.addModalShow}
onHIde={this.addModalClose}
/>
按下按钮后我得到的是: 它实际上位于第一个组件之上。
知道这里有什么问题吗?
这是因为您的 bootstrap CSS 样式不起作用!!!
首先你需要 使用 NPM 安装 Bootstrap
npm install --save bootstrap
现在将 bootstrap 导入项目的任何位置(建议在最顶部的组件中),这适用于我的情况。
import 'bootstrap/dist/css/bootstrap.css';
CSS 样式将开始工作。 :)
祝您编程愉快!