Skip to content

Commit f5ed4dc

Browse files
committed
Complete section: Introduction to Web Development, React, and React Hooks
1 parent 9a63db2 commit f5ed4dc

2 files changed

Lines changed: 50 additions & 2 deletions

File tree

frontend/src/App.js

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,32 @@
1-
import React from 'react';
1+
import React, { useState } from 'react';
2+
import Joke from './Joke';
23

34
function App() {
5+
const [userQuery, setUserQuery] = useState('');
6+
7+
const updateUserQuery = event => {
8+
console.log('userQuery', userQuery);
9+
setUserQuery(event.target.value);
10+
}
11+
12+
const searchQuery = () => {
13+
window.open(`https://google.com/search?q=${userQuery}`);
14+
}
15+
16+
const handleKeyPress = event => {
17+
if (event.key === 'Enter') {
18+
searchQuery();
19+
}
20+
}
21+
422
return (
5-
<div className="App">App</div>
23+
<div>
24+
<input value={userQuery} onChange={updateUserQuery} onKeyPress={handleKeyPress} />
25+
<button onClick={searchQuery}>Search</button>
26+
<div>{userQuery}</div>
27+
<hr />
28+
<Joke />
29+
</div>
630
);
731
}
832

frontend/src/Joke.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import React, { useEffect, useState } from 'react';
2+
3+
function Joke() {
4+
const [joke, setJoke] = useState({});
5+
6+
useEffect(() => {
7+
fetch('https://official-joke-api.appspot.com/jokes/random')
8+
.then(response => response.json())
9+
.then(json => {
10+
console.log('joke json', json)
11+
setJoke(json)
12+
});
13+
}, []);
14+
15+
return (
16+
<div>
17+
<h3>Joke</h3>
18+
<p>{setup}</p>
19+
<p><em>{punchline}</em></p>
20+
</div>
21+
)
22+
}
23+
24+
export default Joke;

0 commit comments

Comments
 (0)