Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
type_script [2024/05/04 11:01] tro |
type_script [2024/05/04 11:18] (текущий) tro |
||
|---|---|---|---|
| Строка 37: | Строка 37: | ||
| </ | </ | ||
| + | ===== Рефакторінг проекту з React на TypeScript + React ===== | ||
| + | [[https:// | ||
| + | |||
| ===== Типизація ===== | ===== Типизація ===== | ||
| ==== Базова ==== | ==== Базова ==== | ||
| Строка 290: | Строка 293: | ||
| npm install --save-dev @types/ | npm install --save-dev @types/ | ||
| </ | </ | ||
| + | ==== Хуки, які зазвичай не потрібно типізувати ==== | ||
| + | ==== useEffect ==== | ||
| + | useEffect очікує, | ||
| + | < | ||
| + | useEffect(() => { | ||
| + | let isActive = true; | ||
| + | |||
| + | return (): void => { | ||
| + | isActive = false; | ||
| + | }; | ||
| + | }, []); | ||
| + | </ | ||
| + | ==== useMemo ==== | ||
| + | У цьому прикладі ми використовуємо хук useMemo для оптимізації продуктивності. Ми створюємо мемоізоване значення selectedUser, | ||
| + | < | ||
| + | import React, { useMemo } from ' | ||
| + | |||
| + | type User = { | ||
| + | id: number; | ||
| + | name: string; | ||
| + | }; | ||
| + | |||
| + | type Props = { | ||
| + | users: User[]; | ||
| + | selectedUserId: | ||
| + | }; | ||
| + | |||
| + | export function UserList({ users, selectedUserId }: Props) { | ||
| + | const selectedUser = useMemo(() => { | ||
| + | return users.find(user => user.id === selectedUserId); | ||
| + | }, [users, selectedUserId]); | ||
| + | |||
| + | return ( | ||
| + | < | ||
| + | {selectedUser && < | ||
| + | {users.map(user => ( | ||
| + | < | ||
| + | ))} | ||
| + | </ | ||
| + | ); | ||
| + | } | ||
| + | </ | ||
| + | |||