Skip to content

Commit 801a2ad

Browse files
react-7
1 parent d95059d commit 801a2ad

File tree

5 files changed

+47
-8
lines changed

5 files changed

+47
-8
lines changed

src/App.js

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,32 @@ function App() {
77
console.log('render App')
88

99
const [videos,setVideos] = useState(videoDB);
10+
const [editableVideo,setEditableVideo] = useState(null);
1011

1112
function addVideos(video){
1213
setVideos([
1314
...videos,
1415
{...video, id: videos.length+1}
1516
]);
1617
}
18+
function deleteVideo(id){
19+
setVideos(videos.filter(video=>video.id!==id))
20+
}
21+
function editVideo(id){
22+
setEditableVideo(videos.find(video=>video.id===id))
23+
}
24+
25+
function updateVideo(video){
26+
const index = videos.findIndex(v=>v.id===video.id)
27+
const newVideos = [...videos]
28+
newVideos.splice(index,1,video)
29+
setVideos(newVideos)
30+
}
1731

1832
return (
1933
<div className="App" onClick={()=>console.log('App')}>
20-
<AddVideo addVideos={addVideos}></AddVideo>
21-
<VideoList videos={videos}></VideoList>
34+
<AddVideo addVideos={addVideos} updateVideo={updateVideo} editableVideo={editableVideo}></AddVideo>
35+
<VideoList deleteVideo={deleteVideo} editVideo={editVideo} videos={videos}></VideoList>
2236

2337

2438
</div>

src/components/AddVideo.js

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import './AddVideo.css';
2-
import {useState} from 'react';
2+
import {useEffect, useState} from 'react';
33

44
const initialState = {
55
time: '1 month ago',
@@ -9,12 +9,17 @@ const initialState = {
99
views:''
1010
}
1111

12-
function AddVideo({addVideos}) {
12+
function AddVideo({addVideos,updateVideo,editableVideo}) {
1313
const [video, setVideo] = useState(initialState);
1414

1515
function handleSubmit(e) {
1616
e.preventDefault();
17-
addVideos(video)
17+
if(editableVideo){
18+
updateVideo(video)
19+
}else{
20+
addVideos(video)
21+
}
22+
1823
setVideo(initialState)
1924

2025
}
@@ -24,6 +29,12 @@ function AddVideo({addVideos}) {
2429
})
2530
}
2631

32+
useEffect(()=>{
33+
if(editableVideo){
34+
setVideo(editableVideo)
35+
}
36+
},[editableVideo])
37+
2738
return (
2839
<form>
2940
<input
@@ -43,7 +54,7 @@ function AddVideo({addVideos}) {
4354
<button
4455
onClick={handleSubmit}
4556
>
46-
Add Video
57+
{editableVideo?'Edit':'Add'} Video
4758
</button>
4859
</form>
4960
);

src/components/Video.css

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
width:15em;
88
margin: 0 0.2em;
99
float: left;
10+
position: relative;
1011
}
1112
.pic img{
1213
width: 100%;
@@ -24,4 +25,13 @@
2425

2526
.views span{
2627
padding: 0 0.5em;
28+
}
29+
30+
.close{
31+
position: absolute;
32+
right:0;
33+
}
34+
.edit{
35+
position: absolute;
36+
right:4em;
2737
}

src/components/Video.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
import './Video.css';
22

3-
function Video({title,id,channel="Coder Dost",views,time,verified,children}) {
3+
function Video({title,id,channel="Coder Dost",views,time,verified,children,deleteVideo,editVideo}) {
44
console.log('render Video')
55

66

77
return (
88
<>
99
<div className='container'>
10+
<button className='close' onClick={()=>deleteVideo(id)}>X</button>
11+
<button className='edit' onClick={()=>editVideo(id)}>Edit</button>
1012
<div className="pic">
1113
<img src={`https://picsum.photos/id/${id}/160/90`} alt="Katherine Johnson" />
1214
</div>

src/components/VideoList.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import Video from "./Video";
22
import PlayButton from "./PlayButton";
33

4-
function VideoList({videos}){
4+
function VideoList({videos,deleteVideo,editVideo}){
55

66
return(
77
<>
@@ -14,6 +14,8 @@ function VideoList({videos}){
1414
channel={video.channel}
1515
verified={video.verified}
1616
id={video.id}
17+
deleteVideo={deleteVideo}
18+
editVideo={editVideo}
1719
>
1820
<PlayButton
1921
onPlay={() => console.log('Playing..',video.title)}

0 commit comments

Comments
 (0)