mirror of
https://github.com/IgnatZakalinsky/home-works.git
synced 2026-01-03 12:32:01 +00:00
79 lines
2.3 KiB
TypeScript
79 lines
2.3 KiB
TypeScript
import React, { ChangeEvent, KeyboardEvent, useState } from 'react'
|
|
import Greeting from './Greeting'
|
|
import { UserType } from './HW3'
|
|
|
|
type GreetingContainerPropsType = {
|
|
users: any // need to fix any
|
|
addUserCallback: any // need to fix any
|
|
}
|
|
|
|
export const pureAddUser = (name: any, setError: any, setName: any, addUserCallback: any) => {
|
|
// если имя пустое - показать ошибку, иначе - добавить юзера и очистить инпут
|
|
if (!name.trim()) {
|
|
setError('name is required!')
|
|
} else {
|
|
addUserCallback(name)
|
|
setName('')
|
|
}
|
|
}
|
|
|
|
export const pureOnBlur = (name: any, setError: any) => { // если имя пустое - показать ошибку
|
|
if (!name.trim()) {
|
|
setError('name is required!')
|
|
}
|
|
}
|
|
|
|
export const pureOnEnter = (e: any, addUser: any) => { // если нажата кнопка Enter - добавить
|
|
if (e.key === 'Enter') {
|
|
addUser()
|
|
}
|
|
}
|
|
|
|
// более простой и понятный для новичков
|
|
// function GreetingContainer(props: GreetingPropsType) {
|
|
|
|
// более современный и удобный для про :)
|
|
const GreetingContainer: React.FC<GreetingContainerPropsType> = ({
|
|
users,
|
|
addUserCallback,
|
|
}) => {
|
|
// деструктуризация пропсов
|
|
const [name, setName] = useState<any>('') // need to fix any
|
|
const [error, setError] = useState<any>('') // need to fix any
|
|
|
|
const setNameCallback = (e: any) => { // need to fix any
|
|
setName(e.currentTarget.value) // need to fix
|
|
|
|
error && setError('')
|
|
}
|
|
const addUser = () => {
|
|
pureAddUser(name, setError, setName, addUserCallback)
|
|
}
|
|
|
|
const onBlur = () => {
|
|
pureOnBlur(name, setError)
|
|
}
|
|
|
|
const onEnter = (e: any) => {
|
|
pureOnEnter(e, addUser)
|
|
}
|
|
|
|
const totalUsers = users.length // need to fix
|
|
const lastUserName = users[users.length - 1]?.name // need to fix
|
|
|
|
return (
|
|
<Greeting
|
|
name={name}
|
|
setNameCallback={setNameCallback}
|
|
addUser={addUser}
|
|
onBlur={onBlur}
|
|
onEnter={onEnter}
|
|
error={error}
|
|
totalUsers={totalUsers}
|
|
lastUserName={lastUserName}
|
|
/>
|
|
)
|
|
}
|
|
|
|
export default GreetingContainer
|