Skip to content

Commit 3f339c1

Browse files
committed
Added form to get username, and show it on user page - using useNavigate, useLocation and react-router-dom
1 parent 5362648 commit 3f339c1

5 files changed

Lines changed: 109 additions & 13 deletions

File tree

package-lock.json

Lines changed: 59 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
"@testing-library/user-event": "^13.5.0",
99
"react": "^18.2.0",
1010
"react-dom": "^18.2.0",
11+
"react-router": "^6.3.0",
12+
"react-router-dom": "^6.3.0",
1113
"react-scripts": "5.0.1",
1214
"web-vitals": "^2.1.4"
1315
},

src/App.js

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,25 @@
1-
function App() {
1+
import { useState } from 'react';
2+
import { useNavigate } from 'react-router-dom';
3+
4+
export default function App() {
5+
const [username, setUsername] = useState('');
6+
const handleChange = e => setUsername(e.target.value);
7+
const navigate = useNavigate();
8+
29
return (
3-
<div className="App">
4-
<h1>Hello World</h1>
5-
</div>
10+
<main>
11+
<form
12+
onSubmit={e => {
13+
e.preventDefault();
14+
navigate('/user', {
15+
state: {
16+
id: username,
17+
}
18+
})
19+
}}>
20+
<label htmlFor="username">Type your username</label>
21+
<input name="username" type="text" onChange={handleChange} />
22+
</form>
23+
</main>
624
);
7-
}
8-
9-
export default App;
25+
}

src/index.js

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
1-
import React from 'react';
2-
import ReactDOM from 'react-dom/client';
3-
import App from './App';
1+
import React from "react";
2+
import ReactDOM from "react-dom/client";
3+
import { BrowserRouter, Routes, Route } from "react-router-dom";
4+
import App from "./App";
5+
import User from "./user";
46

5-
const root = ReactDOM.createRoot(document.getElementById('root'));
7+
const root = ReactDOM.createRoot(document.getElementById("root"));
68
root.render(
79
<React.StrictMode>
8-
<App />
10+
<BrowserRouter>
11+
<Routes>
12+
<Route path="/" element={<App />} />
13+
<Route path="user" element={<User />} />
14+
</Routes>
15+
</BrowserRouter>
916
</React.StrictMode>
10-
);
17+
);

src/user.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { useLocation } from "react-router";
2+
3+
const User = (props) => {
4+
const location = useLocation();
5+
const username = location.state.id;
6+
7+
return (
8+
<h1>Hello {username}</h1>
9+
);
10+
}
11+
12+
export default User;

0 commit comments

Comments
 (0)