1- import React , { useState } from 'react' ;
1+ import React , { useState , Fragment } from 'react' ;
22import UserTable from './tables/UserTable' ;
33import AddUserForm from './forms/AddUserForm' ;
4- import EditUserForm from './forms/EditUserForm'
4+ import EditUserForm from './forms/EditUsersForm' ;
55
66const App = ( ) => {
77 const usersData = [
@@ -11,11 +11,15 @@ const App = () => {
1111 { id :4 , name :'Sheena, W.P.' , username :'sheenaWp312' }
1212 ]
1313
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].
1518// useState comes from React import for handling state
1619
1720 const [ users , setUsers ] = useState ( usersData )
18-
21+ const [ editing , setEditing ] = useState ( false )
22+ const [ currentUser , setCurrentUser ] = useState ( initialFormState )
1923
2024// increment the ID of the new user manually - function will
2125// take a user object as a parameter, add them to the users array of objects
@@ -29,12 +33,10 @@ const App = () => {
2933 // pass deleteUser through props to UserTable
3034 // use setter to take ID of user & filter them out of the users array
3135 const deleteUser = ( id ) => {
36+ setEditing ( false )
37+
3238 setUsers ( users . filter ( user => user . id !== id ) )
3339 }
34-
35- const [ editing , setEditing ] = useState ( false )
36- const initialFormState = { id :null , name :'' , username :'' }
37- const [ currentUser , setCurrentUser ] = useState ( initialFormState )
3840
3941 const editRow = ( user ) => {
4042 setEditing ( true )
@@ -47,17 +49,30 @@ const App = () => {
4749 setUsers ( users . map ( user => ( user . id === id ? updatedUser : user ) ) )
4850 }
4951
50-
5152 return (
5253 < div className = "container" >
53- < h1 > CRUD React App with Hooks Instead of Classes</ h1 >
54+ < h1 > CRUD React App with Hooks - No Classes</ h1 >
5455 < div className = "flex-row" >
5556 < 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+ ) }
5873 </ div >
5974 < div className = "flex-large" >
60- < h2 > View Users </ h2 >
75+ < h2 > View users </ h2 >
6176 < UserTable users = { users } editRow = { editRow } deleteUser = { deleteUser } />
6277 </ div >
6378 </ div >
0 commit comments