#node.js #reactjs #express #redirect
Вопрос:
Я кодирую регистрацию с помощью React.js Узел (экспресс) MongoDB. Все мои шаги работают: моя консоль.log() работает спереди, затем сзади, затем снова спереди. Мой «новый пользователь» хорошо записан в моей базе данных (MongoDB) после подписки. Так что все в порядке, кроме Страница немедленно «прыгает» обратно.
Действительно, у меня есть Итак, у меня есть «Новый пользователь» в базе данных (отлично!), Но мой редирект спереди не работает.
Я пытался :
return <Redirect to='/home' />
return <Redirect push to='/home' />
return <Link to='/home' />
…
Я чувствовал, что это проблема с @ или специальным символом в любом вводе, потому что я преуспел в процессе ввода без какой-либо базы данных, но, похоже, причина не в этом.
React.js : регистрация.Крюк jsx :
const [email, setEmail] = useState('');
затем пример ввода
<Input
type='email'
style={style.inputEmail}
onChange={(e) => setEmail(e.target.value)}
/>
затем функция hook для управления серверной частью
const [userConnected, setUserConnected] = useState(false)
const handleSubmitForm = async () => {
const data = await fetch('/users/form', {
method: 'POST',
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
body: `email=${email}amp;password=${password}`
})
const body = await data.json();
if(body.integrationBDD){
setUserConnected(true)
}
}
if(userConnected){
return <Redirect push to='/home' />
}
import { Redirect, useHistory } from "react-router-dom";
app.js
<Router>
<div className="page-container">
<NavBar />
<Switch>
<Route exact path="/" component={Admin} />
<Route exact path="/home" component={Home} />
..
Пожалуйста, обратите внимание, что когда «Вопросительный знак кажется странным ?
Ответ №1:
Предполагая, что вы используете react-маршрутизатор, я думаю, что вы можете использовать крючок истории использования здесь. Например:
const [userConnected, setUserConnected] = useState(false);
const history = useHistory();
const handleSubmitForm = async ()=> {
if(body.integrationBDD){
history.push("/home"); //or history.push("/");
}
}
источник: https://reactrouter.com/web/api/Hooks
Комментарии:
1. К сожалению, это не работает. Мы протестировали историю, Перенаправление и внедрили последние модули из react-router-dom и react-истории