Skip to content

Commit d95059d

Browse files
react-6
1 parent 38a2b3b commit d95059d

File tree

4 files changed

+98
-39
lines changed

4 files changed

+98
-39
lines changed

src/App.js

Lines changed: 11 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,25 @@
11
import { useState } from 'react';
22
import './App.css';
3-
import Counter from './components/Counter';
4-
import PlayButton from './components/PlayButton';
5-
import Video from './components/Video';
3+
import AddVideo from './components/AddVideo';
64
import videoDB from './data/data';
5+
import VideoList from './components/VideoList';
76
function App() {
87
console.log('render App')
98

109
const [videos,setVideos] = useState(videoDB);
1110

11+
function addVideos(video){
12+
setVideos([
13+
...videos,
14+
{...video, id: videos.length+1}
15+
]);
16+
}
17+
1218
return (
1319
<div className="App" onClick={()=>console.log('App')}>
14-
<div>
15-
<button onClick={()=>{
16-
setVideos( [...videos,{ id:videos.length+1,
17-
title: 'Demo JS tutorial',
18-
views: '1M',
19-
time: '1 month ago',
20-
channel: 'Coder Dost',
21-
verified: true
22-
}]);
23-
}}>Add Video</button>
24-
</div>
25-
{videos.map((video) => (
26-
<Video
27-
key={video.id}
28-
title={video.title}
29-
views={video.views}
30-
time={video.time}
31-
channel={video.channel}
32-
verified={video.verified}
33-
id={video.id}
34-
>
35-
<PlayButton
36-
onPlay={() => console.log('Playing..',video.title)}
37-
onPause={() => console.log('Paused..',video.title)}
38-
>
39-
{video.title}
40-
</PlayButton>
41-
</Video>
42-
))}
43-
44-
<div style={{ clear: 'both' }}>
45-
{/* <PlayButton message="play-msg" onPlay={()=>console.log('Play')} onPause={()=>console.log('Pause')}>Play</PlayButton> */}
46-
47-
{/* <PlayButton message="pause-msg" onSmash={()=>alert('Playyy')}>Pause</PlayButton> */}
48-
</div>
20+
<AddVideo addVideos={addVideos}></AddVideo>
21+
<VideoList videos={videos}></VideoList>
4922

50-
<Counter></Counter>
5123

5224
</div>
5325
);

src/components/AddVideo.css

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
input{
2+
display: block;
3+
padding: 1em;
4+
margin-bottom:10px;
5+
}

src/components/AddVideo.js

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import './AddVideo.css';
2+
import {useState} from 'react';
3+
4+
const initialState = {
5+
time: '1 month ago',
6+
channel: 'Coder Dost',
7+
verified: true,
8+
title:'',
9+
views:''
10+
}
11+
12+
function AddVideo({addVideos}) {
13+
const [video, setVideo] = useState(initialState);
14+
15+
function handleSubmit(e) {
16+
e.preventDefault();
17+
addVideos(video)
18+
setVideo(initialState)
19+
20+
}
21+
function handleChange(e) {
22+
setVideo({...video,
23+
[e.target.name] : e.target.value
24+
})
25+
}
26+
27+
return (
28+
<form>
29+
<input
30+
type="text"
31+
name="title"
32+
onChange={handleChange}
33+
placeholder="title"
34+
value={video.title}
35+
/>
36+
<input
37+
type="text"
38+
name="views"
39+
onChange={handleChange}
40+
placeholder="views"
41+
value={video.views}
42+
/>
43+
<button
44+
onClick={handleSubmit}
45+
>
46+
Add Video
47+
</button>
48+
</form>
49+
);
50+
}
51+
52+
export default AddVideo;

src/components/VideoList.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import Video from "./Video";
2+
import PlayButton from "./PlayButton";
3+
4+
function VideoList({videos}){
5+
6+
return(
7+
<>
8+
{videos.map((video) => (
9+
<Video
10+
key={video.id}
11+
title={video.title}
12+
views={video.views}
13+
time={video.time}
14+
channel={video.channel}
15+
verified={video.verified}
16+
id={video.id}
17+
>
18+
<PlayButton
19+
onPlay={() => console.log('Playing..',video.title)}
20+
onPause={() => console.log('Paused..',video.title)}
21+
>
22+
{video.title}
23+
</PlayButton>
24+
</Video>
25+
))}
26+
</>
27+
)
28+
}
29+
30+
export default VideoList

0 commit comments

Comments
 (0)