gpt4 book ai didi

javascript - 从 ReactJS 中的其他组件打开模式

转载 作者:行者123 更新时间:2023-12-01 15:34:36 25 4
gpt4 key购买 nike

嘿,我有一个关于 ReactJS 的问题,因为我尝试使用 react-bootstrap 制作模式。并在另一个组件中打开它。但是什么也没发生,请查看我的代码并给我一些建议。我尝试从 LoginModal 调用函数使用 onClick="LoginModal.handleShow" 的组件但这不起作用。

import React, { Component } from 'react';
import {
Popover,
Tooltip,
Modal
} from 'react-bootstrap';

class LoginModal extends React.Component {
constructor(props, context){
super(props, context);
this.handleShow = this.handleShow.bind(this);
this.handleClose = this.handleClose.bind(this);
this.state = {
show: false
}
}
handleShow() {
this.setState({ show: true })
}
handleClose(){
this.setState({ show: false })
}
render() {

return (
<div>
<Modal show={this.state.show} onHide={this.handleClose}>
<Modal.Header closeButton>
<Modal.Title>Modal Heading</Modal.Title>
</Modal.Header>
<Modal.Body>
<h1>This is modal body</h1>
</Modal.Body>
</Modal>
</div>
)
}
}
export default LoginModal

以及呈现的 App 组件
import React, { Component } from 'react';
import LoginModal from './components/Login/Login'
import {
Navbar,
NavItem,
Nav,
Button
} from 'react-bootstrap';
import {
BrowserRouter as Router,
Route,
Switch,
} from 'react-router-dom'

class App extends Component {

render(){
return (
<Router>
<div className="menu-bar">
<LoginModal></LoginModal>
<Navbar inverse collapseOnSelect>
<Nav>
<NavItem>
<Button onClick={LoginModal.handleShow}>Login</Button>
</NavItem>
</Nav>
</Navbar>

<Switch>
<Route exact path="/" component={Home}/>
</Switch>
</div>
</Router>
)
}
}
export default App;

最佳答案

使用ref引用 LoginModal 的关键字.然后调用handleShow从引用。

class App extends Component {

loginModalRef = ({handleShow}) => {
this.showModal = handleShow;
}

onLoginClick = () => {
this.showModal();
}


render(){
return (
<Router>
<div className="menu-bar">
<LoginModal ref={this.loginModalRef} ></LoginModal>
<Navbar inverse collapseOnSelect>
<Nav>
<NavItem>
<Button onClick={this.onLoginClick}>Login</Button>
</NavItem>
</Nav>
</Navbar>

<Switch>
<Route exact path="/" component={Home}/>
</Switch>
</div>
</Router>
)
}
}

在这里,我准备了 stackblitz 片段供您在线测试。 https://stackblitz.com/edit/react-bxn5kj?file=index.js

关于javascript - 从 ReactJS 中的其他组件打开模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50670067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com