@@ -2,60 +2,58 @@ import Card from "../UI/Card";
2
2
import styles from './AddUsers.module.css' ;
3
3
import Button from "../UI/Button" ;
4
4
import ErrorModal from "../UI/ErrorModal" ;
5
- import { useState } from "react" ;
5
+ import { useState , useRef } from "react" ;
6
+ import WrapperComponent from "../Helpers/WrapperComponent" ;
6
7
const AddUsers = ( props ) => {
7
- const [ enteredUsername , setEnteredUsername ] = useState ( '' )
8
- const [ enteredAge , setEnteredAge ] = useState ( '' )
9
- const [ error , setError ] = useState ( ) ;
8
+ const nameInputRef = useRef ( ) ;
9
+ const ageInputRef = useRef ( ) ;
10
10
11
- const addUserHandler = ( event ) => {
12
- event . preventDefault ( ) ;
13
- if ( enteredUsername . trim ( ) . length === 0 || enteredAge . trim ( ) . length === 0 ) {
14
- setError ( {
15
- title :'Invalid input' ,
16
- message : 'Please enter a valid name and age (non-empty values).'
17
- } )
18
- return ;
19
- }
20
- if ( + enteredAge < 1 ) {
21
- setError ( {
22
- title : 'Invalid age' ,
23
- message : 'Please enter a valid age (> 0).'
24
- } )
25
- return
26
- }
27
- props . onAddUser ( enteredUsername , enteredAge )
28
- setEnteredAge ( '' )
29
- setEnteredUsername ( '' )
30
- }
11
+ const [ error , setError ] = useState ( ) ;
31
12
13
+ const addUserHandler = ( event ) => {
14
+ event . preventDefault ( ) ;
15
+ const eneteredName = nameInputRef . current . value
16
+ const enteredUserAge = ageInputRef . current . value
17
+ if ( eneteredName . trim ( ) . length === 0 || enteredUserAge . trim ( ) . length === 0 ) {
18
+ setError ( {
19
+ title :'Invalid input' ,
20
+ message : 'Please enter a valid name and age (non-empty values).'
21
+ } )
22
+ return ;
23
+ }
24
+ if ( + enteredUserAge < 1 ) {
25
+ setError ( {
26
+ title : 'Invalid age' ,
27
+ message : 'Please enter a valid age (> 0).'
28
+ } )
29
+ return
30
+ }
31
+ props . onAddUser ( eneteredName , enteredUserAge )
32
+
33
+ // Not recommended to manipulate the DOM but in this case its okay
34
+ nameInputRef . current . value = ''
35
+ ageInputRef . current . value = ''
36
+ }
32
37
33
- const usernameChangeHandler = ( event ) => {
34
- setEnteredUsername ( event . target . value )
35
- }
36
-
37
- const ageChangeHandler = ( event ) => {
38
- setEnteredAge ( event . target . value )
39
- }
40
38
41
- const errorHandler = ( ) => {
42
- setError ( null ) ;
43
- }
39
+ const errorHandler = ( ) => {
40
+ setError ( null ) ;
41
+ }
44
42
45
- return (
46
- < div >
47
- { error && < ErrorModal title = { error . title } message = { error . message } onConfirm = { errorHandler } /> }
48
- < Card className = { styles . input } >
49
- < form onSubmit = { addUserHandler } >
50
- < label htmlFor = "username" > Username</ label >
51
- < input type = "text" id = "username" value = { enteredUsername } onChange = { usernameChangeHandler } />
52
- < label > Age (Years)</ label >
53
- < input id = "age" type = "number" value = { enteredAge } onChange = { ageChangeHandler } />
54
- < Button type = "submit" > Add Users</ Button >
55
- </ form >
56
- </ Card >
57
- </ div >
58
- )
43
+ return (
44
+ < WrapperComponent >
45
+ { error && < ErrorModal title = { error . title } message = { error . message } onConfirm = { errorHandler } /> }
46
+ < Card className = { styles . input } >
47
+ < form onSubmit = { addUserHandler } >
48
+ < label htmlFor = "username" > Username</ label >
49
+ < input type = "text" id = "username" ref = { nameInputRef } />
50
+ < label > Age (Years)</ label >
51
+ < input id = "age" type = "number" ref = { ageInputRef } />
52
+ < Button type = "submit" > Add Users</ Button >
53
+ </ form >
54
+ </ Card >
55
+ </ WrapperComponent >
56
+ )
59
57
}
60
58
61
59
export default AddUsers
0 commit comments