Я пытаюсь создать модальную форму для входа в приложение.Тем не менее, я хочу, чтобы всплывающее окно появлялось, когда я нажимал ссылку вместо кнопки.Другими словами, когда я нажимаю на ссылку входа в систему на панели навигации, я не хочу, чтобы меня перенаправляли на другую страницу целиком.Я просто хочу, чтобы модал всплыл.
Я очень новичок в ReactJS, поэтому я не уверен, как это сделать.Может ли кто-нибудь помочь мне понять, как заставить эту функцию работать?Я был бы очень признателен.
Кроме того, если кто-то знает о некоторых замечательных ресурсах о том, как реализовать правильную форму входа, я также был бы очень признателен за это.Я нашел несколько на CodePen, но ни один из них не показывает ясного и доступного способа создания этого компонента.По крайней мере, для такого начинающего, как я.
Ниже указан мой код.Кроме того, если это поможет, я предоставил ссылку на сайт, который в настоящее время использую в качестве ссылки для создания этого кода.
Ресурс: https://react -bootstrap.github.io / components / modal /
App.js
import React from 'react';
import {BrowserRouter, Route, Switch} from 'react-router-dom'
import Navbar from './components/Navbar/navbar.js';
import Footer from './components/Footer/footer.js';
import Home from './pages/Home/home.js';
import Login from './pages/Login/login.js';
import Languages from './pages/Languages/languages.js';
function App() {
return (
<div className="App">
<BrowserRouter>
<Navbar/>
<Switch>
<Route exact path="/" component={Home}/>
<Route path="/login" component={Login}/>
<Route path="/languages" component={Languages}/>
</Switch>
</BrowserRouter>
<Footer />
</div>
);
}
export default App;
Navbar.js
import React from 'react';
import { Link } from 'react-router-dom';
import './navbar.css';
const Navbar = () => {
return (
<nav className="navbar navbar-expand-sm navbar-dark px-sm-5">
<div className="container">
<Link to='/'>
<div className="navbar-brand">
<i class="fas fa-globe fa-2x"></i>
</div>
</Link>
<ul className="navbar-nav align-items-right">
<li className="nav-item ml-5">
<Link to="/login" className="nav-link">
Log In
</Link>
</li>
<li className="nav-item ml-5">
<Link to="/signup" className="nav-link">
Sign Up
</Link>
</li>
</ul>
</div>
</nav>
)
}
export default Navbar;
Вход.JS
import React, { Component } from 'react';
// import { connect } from 'react-redux';
import Modal from 'react-bootstrap/Modal';
import Button from 'react-bootstrap/Button';
import './login.css';
class Login extends Component {
constructor(props, context) {
super(props, context);
this.handleShow = this.handleShow.bind(this);
this.handleClose = this.handleClose.bind(this);
this.state = {
show: false,
};
}
handleClose() {
this.setState({ show: false });
}
handleShow() {
this.setState({ show: true });
}
render() {
return (
<>
<Button variant="primary" onClick={this.handleShow}>
Launch demo modal
</Button>
<Modal show={this.state.show} onHide={this.handleClose}>
<Modal.Header closeButton>
<Modal.Title>Login</Modal.Title>
</Modal.Header>
<Modal.Body>...</Modal.Body>
<Modal.Footer>
<Button variant="danger" onClick={this.handleClose}>
Cancel
</Button>
</Modal.Footer>
</Modal>
</>
);
}
}
export default Login;