1
- import React , { useState } from 'react' ;
1
+ import React , { useState , Fragment } from 'react' ;
2
2
import UserTable from './tables/UserTable' ;
3
3
import AddUserForm from './forms/AddUserForm' ;
4
- import EditUserForm from './forms/EditUserForm'
4
+ import EditUserForm from './forms/EditUsersForm' ;
5
5
6
6
const App = ( ) => {
7
7
const usersData = [
@@ -11,11 +11,15 @@ const App = () => {
11
11
{ id :4 , name :'Sheena, W.P.' , username :'sheenaWp312' }
12
12
]
13
13
14
- // Hooks syntax - you define the two params in [x, y].
14
+
15
+ const initialFormState = { id :null , name :'' , username :'' }
16
+
17
+ // set state Hooks syntax - you define the two params in [x, y].
15
18
// useState comes from React import for handling state
16
19
17
20
const [ users , setUsers ] = useState ( usersData )
18
-
21
+ const [ editing , setEditing ] = useState ( false )
22
+ const [ currentUser , setCurrentUser ] = useState ( initialFormState )
19
23
20
24
// increment the ID of the new user manually - function will
21
25
// take a user object as a parameter, add them to the users array of objects
@@ -29,12 +33,10 @@ const App = () => {
29
33
// pass deleteUser through props to UserTable
30
34
// use setter to take ID of user & filter them out of the users array
31
35
const deleteUser = ( id ) => {
36
+ setEditing ( false )
37
+
32
38
setUsers ( users . filter ( user => user . id !== id ) )
33
39
}
34
-
35
- const [ editing , setEditing ] = useState ( false )
36
- const initialFormState = { id :null , name :'' , username :'' }
37
- const [ currentUser , setCurrentUser ] = useState ( initialFormState )
38
40
39
41
const editRow = ( user ) => {
40
42
setEditing ( true )
@@ -47,17 +49,30 @@ const App = () => {
47
49
setUsers ( users . map ( user => ( user . id === id ? updatedUser : user ) ) )
48
50
}
49
51
50
-
51
52
return (
52
53
< div className = "container" >
53
- < h1 > CRUD React App with Hooks Instead of Classes</ h1 >
54
+ < h1 > CRUD React App with Hooks - No Classes</ h1 >
54
55
< div className = "flex-row" >
55
56
< div className = "flex-large" >
56
- < h2 > Add User</ h2 >
57
- < AddUserForm addUser = { addUser } />
57
+ { editing ? (
58
+ < Fragment >
59
+ < h2 > Edit user</ h2 >
60
+ < EditUserForm
61
+ editing = { editing }
62
+ setEditing = { setEditing }
63
+ currentUser = { currentUser }
64
+ updateUser = { updateUser }
65
+ />
66
+ </ Fragment >
67
+ ) : (
68
+ < Fragment >
69
+ < h2 > Add user</ h2 >
70
+ < AddUserForm addUser = { addUser } />
71
+ </ Fragment >
72
+ ) }
58
73
</ div >
59
74
< div className = "flex-large" >
60
- < h2 > View Users </ h2 >
75
+ < h2 > View users </ h2 >
61
76
< UserTable users = { users } editRow = { editRow } deleteUser = { deleteUser } />
62
77
</ div >
63
78
</ div >
0 commit comments