Skip to content

Commit 83802c8

Browse files
committed
GET request example
1 parent e77c28e commit 83802c8

File tree

16 files changed

+27442
-0
lines changed

16 files changed

+27442
-0
lines changed

Sections/Section 14/01-starting-project/package-lock.json

Lines changed: 27175 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
{
2+
"name": "react-the-complete-guide",
3+
"version": "0.1.0",
4+
"private": true,
5+
"dependencies": {
6+
"@testing-library/jest-dom": "^4.2.4",
7+
"@testing-library/react": "^9.4.1",
8+
"@testing-library/user-event": "^7.2.1",
9+
"react": "^18.0.0",
10+
"react-dom": "^18.0.0",
11+
"react-scripts": "^5.0.1"
12+
},
13+
"scripts": {
14+
"start": "react-scripts start",
15+
"build": "react-scripts build",
16+
"test": "react-scripts test",
17+
"eject": "react-scripts eject"
18+
},
19+
"eslintConfig": {
20+
"extends": "react-app"
21+
},
22+
"browserslist": {
23+
"production": [
24+
">0.2%",
25+
"not dead",
26+
"not op_mini all"
27+
],
28+
"development": [
29+
"last 1 chrome version",
30+
"last 1 firefox version",
31+
"last 1 safari version"
32+
]
33+
}
34+
}
Binary file not shown.
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="utf-8" />
5+
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
6+
<meta name="viewport" content="width=device-width, initial-scale=1" />
7+
<meta name="theme-color" content="#000000" />
8+
<meta
9+
name="description"
10+
content="Web site created using create-react-app"
11+
/>
12+
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
13+
<!--
14+
manifest.json provides metadata used when your web app is installed on a
15+
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
16+
-->
17+
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
18+
<!--
19+
Notice the use of %PUBLIC_URL% in the tags above.
20+
It will be replaced with the URL of the `public` folder during the build.
21+
Only files inside the `public` folder can be referenced from the HTML.
22+
23+
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
24+
work correctly both with client-side routing and a non-root public URL.
25+
Learn how to configure a non-root public URL by running `npm run build`.
26+
-->
27+
<title>React App</title>
28+
</head>
29+
<body>
30+
<noscript>You need to enable JavaScript to run this app.</noscript>
31+
<div id="root"></div>
32+
<!--
33+
This HTML file is a template.
34+
If you open it directly in the browser, you will see an empty page.
35+
36+
You can add webfonts, meta tags, or analytics to this file.
37+
The build step will place the bundled scripts into the <body> tag.
38+
39+
To begin the development, run `npm start` or `yarn start`.
40+
To create a production bundle, use `npm run build` or `yarn build`.
41+
-->
42+
</body>
43+
</html>
Loading
Loading
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"short_name": "React App",
3+
"name": "Create React App Sample",
4+
"icons": [
5+
{
6+
"src": "favicon.ico",
7+
"sizes": "64x64 32x32 24x24 16x16",
8+
"type": "image/x-icon"
9+
},
10+
{
11+
"src": "logo192.png",
12+
"type": "image/png",
13+
"sizes": "192x192"
14+
},
15+
{
16+
"src": "logo512.png",
17+
"type": "image/png",
18+
"sizes": "512x512"
19+
}
20+
],
21+
"start_url": ".",
22+
"display": "standalone",
23+
"theme_color": "#000000",
24+
"background_color": "#ffffff"
25+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# https://www.robotstxt.org/robotstxt.html
2+
User-agent: *
3+
Disallow:
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
section {
2+
margin: 1rem auto;
3+
width: 90%;
4+
max-width: 40rem;
5+
text-align: center;
6+
background-color: white;
7+
padding: 2rem;
8+
border-radius: 12px;
9+
}
10+
11+
button {
12+
font: inherit;
13+
cursor: pointer;
14+
background: #230052;
15+
border: 1px solid #230052;
16+
color: white;
17+
padding: 0.75rem 2rem;
18+
border-radius: 20px;
19+
}
20+
21+
button:focus {
22+
outline: none;
23+
}
24+
25+
button:hover,
26+
button:active {
27+
background-color: #460897;
28+
border-color: #460897;
29+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import React, { useState } from 'react';
2+
3+
import MoviesList from './components/MoviesList';
4+
import './App.css';
5+
6+
function App() {
7+
// const dummyMovies = [
8+
// {
9+
// id: 1,
10+
// title: 'Some Dummy Movie',
11+
// openingText: 'This is the opening text of the movie',
12+
// releaseDate: '2021-05-18',
13+
// },
14+
// {
15+
// id: 2,
16+
// title: 'Some Dummy Movie 2',
17+
// openingText: 'This is the second opening text of the movie',
18+
// releaseDate: '2021-05-19',
19+
// },
20+
// ];
21+
22+
const [movies, setMovies] = useState([])
23+
24+
function fetchMoviesHandler() {
25+
fetch('https://swapi.py4e.com/api/films').then(response => {
26+
return response.json();
27+
}).then(data => {
28+
const transformedMovies = data.results.map(movieData => {
29+
return {
30+
id: movieData.episode_id,
31+
title: movieData.title,
32+
openingText: movieData.opening_crawl,
33+
releaseDate: movieData.release_date
34+
}
35+
})
36+
setMovies(transformedMovies)
37+
})
38+
}
39+
40+
return (
41+
<React.Fragment>
42+
<section>
43+
<button onClick={()=> {fetchMoviesHandler()}}>Fetch Movies</button>
44+
</section>
45+
<section>
46+
<MoviesList movies={movies} />
47+
</section>
48+
</React.Fragment>
49+
);
50+
}
51+
52+
export default App;
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import React from 'react';
2+
3+
import classes from './Movie.module.css';
4+
5+
const Movie = (props) => {
6+
return (
7+
<li className={classes.movie}>
8+
<h2>{props.title}</h2>
9+
<h3>{props.releaseDate}</h3>
10+
<p>{props.openingText}</p>
11+
</li>
12+
);
13+
};
14+
15+
export default Movie;
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
.movie {
2+
margin: 1rem;
3+
padding: 1rem;
4+
background-color: #230052;
5+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.26);
6+
border-radius: 12px;
7+
text-align: center;
8+
color: white;
9+
}
10+
11+
.movie h2 {
12+
font-size: 2rem;
13+
color: #f7e702;
14+
}
15+
16+
.movie h3 {
17+
color: #eccf77;
18+
margin: 0;
19+
font-size: 1rem;
20+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import React from 'react';
2+
3+
import Movie from './Movie';
4+
import classes from './MoviesList.module.css';
5+
6+
const MovieList = (props) => {
7+
return (
8+
<ul className={classes['movies-list']}>
9+
{props.movies.map((movie) => (
10+
<Movie
11+
key={movie.id}
12+
title={movie.title}
13+
releaseDate={movie.releaseDate}
14+
openingText={movie.openingText}
15+
/>
16+
))}
17+
</ul>
18+
);
19+
};
20+
21+
export default MovieList;
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
.movies-list {
2+
list-style: none;
3+
margin: 0;
4+
padding: 0;
5+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
* {
2+
box-sizing: border-box;
3+
}
4+
5+
html {
6+
font-family: sans-serif;
7+
}
8+
9+
body {
10+
margin: 0;
11+
background-color: #272727;
12+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import React from 'react';
2+
import ReactDOM from 'react-dom/client';
3+
4+
import './index.css';
5+
import App from './App';
6+
7+
const root = ReactDOM.createRoot(document.getElementById('root'));
8+
root.render(<App />);

0 commit comments

Comments
 (0)