-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAccount.tsx
62 lines (55 loc) · 1.56 KB
/
Account.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import { useState } from 'react'
import { useAppDispatch, useAppSelector } from './hooks'
import { User } from './user'
import { accountUpdated, selectUser } from './userSlice'
function Account() {
const user = useAppSelector(selectUser)
const dispatch = useAppDispatch()
const [name, setName] = useState(user.name)
const handleNameChange: React.ChangeEventHandler<HTMLInputElement> = (e) =>
setName(e.target.value)
const [email, setEmail] = useState(user.email)
const handleEmailChange: React.ChangeEventHandler<HTMLInputElement> = (e) =>
setEmail(e.target.value)
const handleSubmit: React.FormEventHandler = (e) => {
e.preventDefault()
if (name.trim().length === 0) {
return
}
const user: User = {
name: name,
email: email,
}
const action = accountUpdated(user)
dispatch(action)
}
return (
<>
<h3>Account</h3>
<form onSubmit={handleSubmit}>
<div className="form-group">
<label htmlFor="name">Name</label>
<input
type="text"
id="name"
name="name"
value={name}
onChange={handleNameChange}
/>
</div>
<div className="form-group">
<label htmlFor="email">Email</label>
<input
type="text"
id="email"
name="email"
value={email}
onChange={handleEmailChange}
/>
</div>
<input type="submit" className="paper-btn btn-primary" value="Save" />
</form>
</>
)
}
export default Account