After submitting this form I want to be able to redirect the user to the next page (posts page).
However I tried by creating a <button onClick={() => <Redirect to="/posts" />}
but seems not to work. Days ago it worked just fine for me but now I don't know what I'm missing...
This is the current file where I'm submitting a form and want the user to be redirected after submitting it
Auth.js
import React, { useState } from 'react'
import { actions } from './sagaSlice';
import { connect } from 'react-redux';
import { BrowserRouter as Redirect } from "react-router-dom";
const Auth = (props) => {
const [formData, setFormData] = useState({
username: '',
email: '',
password: ''
});
const handleFormData = e =>
setFormData({
...formData,
[e.target.name]: e.target.value
});
const { username, email, password } = formData;
const handleSubmit = e => {
e.preventDefault();
props.login({
username,
email,
password
});
}
return (
<div>
<form
onSubmit={handleSubmit}
>
<input
type="text"
name="username"
placeholder="Username"
onChange={handleFormData}
value={username}
/>
<input
type="email"
name="email"
placeholder="Email"
onChange={handleFormData}
value={email}
/>
<input
type="password"
name="password"
placeholder="Password"
onChange={handleFormData} value={password} />
<button
type="submit"
onClick={() => <Redirect to="/posts" />}
>
Login
</button>
</form>
<button onClick={() => <Redirect to="/posts" />}>Go to posts</button>
</div>
);
}
const mapToProps = (state, ownProps) => {
return ({
user: state.user
})
}
export default connect(mapToProps, actions)(Auth);
And my App.js file
App.js
import React from 'react';
import { connect } from 'react-redux';
import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
import Auth from '../Auth/Auth';
import PostsView from '../PostsView/PostsView';
import PostViewSingle from '../PostViewSingle/PostViewSingle';
const App = (props) => {
return (
<div className="container">
<Router>
<Switch>
<Route path="/login" component={Auth} />
<Route path="/posts" component={PostsView} />
<Route path="/post/:id" component={PostViewSingle} />
</Switch>
</Router>
</div>
);
}
const mapToProps = (state) => {
return ({
isAuthenticated: state.user.isAuthenticated
})
}
export default connect(mapToProps, null)(App);