#javascript #reactjs #authentication #react-router
Вопрос:
Мне нужно создать страницу входа в систему, когда я нажимаю кнопку «Отправить», она должна перейти на страницу панели мониторинга. Ниже приведен мой код, в чем в нем проблема. Когда я сообщаю подробности на странице входа в систему и нажимаю кнопку войти, детали исчезают и не переходят на панель мониторинга.
import React, { Component, useState } from "react";
import axios from 'axios';
import { setUserSession } from '../utils/common';
function Login(props) {
const username = useFormInput('');
const password = useFormInput('');
const [error, setError] = useState(null);
const [loading, setLoading] = useState(false);
// handle button click of login form
const handleLogin = () => {
props.history.push('/dashboard');
}
return (
<form>
<h3>Sign In</h3>
<div className="form-group">
<label>Email address</label>
<input type="email" className="form-control" placeholder="Enter email" />
</div>
<div className="form-group">
<label>Password</label>
<input type="password" className="form-control" placeholder="Enter password" />
</div>
<div className="form-group">
<div className="custom-control custom-checkbox">
<input type="checkbox" className="custom-control-input" id="customCheck1" />
<label className="custom-control-label" htmlFor="customCheck1">Remember me</label>
</div>
</div>
{error amp;amp; <><small style={{ color: 'red' }}>{error}</small><br /></>}<br />
<input type="button" className="btn btn-primary btn-block" value={loading ? 'Loading...' : 'Sign-in'} onClick={handleLogin} disabled={loading} /><br />
<p className="forgot-password text-right">
Forgot <a href="#">password?</a>
</p>
</form>
);
}
const useFormInput = initialValue => {
const [value, setValue] = useState(initialValue);
const handleChange = e => {
setValue(e.target.value);
}
return {
value,
onChange: handleChange
}
}
export default Login;
Ответ №1:
У вас есть определенный маршрут для /dashboard
. Все работало со мной в песочнице кода без настройки маршрутизатора react. Код блока питания показан ниже
<Switch>
<Route path="/dashboard">
<DashboardComponent />
</Route>
</Switch>
Комментарии:
1. Где мне нужно добавить этот фрагмент кода? В «Ручном учете»?
2. После добавления фрагмента в мой login.js файл, теперь навигация не происходит. Но когда я нажимаю кнопку «Отправить», данные для входа остаются!