I have a simple form that only required a username. I want to redirect my user after they submit their username but I don't really understand how to do that.
Here is my class App
, in the render the Channels path works correctly.
import React, { Component } from 'react';
import { BrowserRouter as Router, Route, Link } from "react-router-dom";
import './App.css';
import axios from 'axios';
import { withRouter } from 'react-router-dom';
import Channel from "./channels/Channel.js";
import 'whatwg-fetch';
import openSocket from 'socket.io-client';
const socket = openSocket('http://localhost:1270');
class App extends Component {
constructor(props) {
super(props);
this.state = { value: '' };
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleChange(event) {
this.setState({ value: event.target.value });
}
handleSubmit(event) {
const nom = this.state.value;
alert(nom);
event.preventDefault();
this.props.history.push('/channels');
}
render() {
return (
<Router>
<div>
<p>Entrez un nom d'utilisateur :</p>
<form onSubmit={this.handleSubmit} >
<input type="text"
name="name"
value={this.state.value}
onChange={this.handleChange}
/>
<input type="submit" value="GO" />
</form>
<Link to="/channels">Channels</Link>
</div>
<Route path="/channels" component={ Channel }>
<Channel />
</Route>
</Router>
);
}
}
export default App;
However when I try to add a redirect to the Submit event I got that error
this.props.router is undefined