import { SomeComponent } from ‘../../../SomeComponent’;
Trudno się to czyta, im więcej zagnieżdżeń tym coraz dłuższa ścieżka. Pomijając wrażenia estetyczne problem jest większy kiedy przenosisz plik z jednej ścieżki do drugiej. A w kodzie znajduje się wiele odwołań do poprzedniej lokalizacji.
Można temu zaradzić, używając ścieżki absolutnej.
Ścieżki absolutne
Ścieżka absolutna daje nam gwarancję, że z każdego miejsca w kodzie ścieżka do danego pliku będzie taka sama.
Zamieniając poprzedni przykład na ścieżkę absolutną, może to wyglądać tak:
import { SomeComponent } from ‘components/SomeComponent’;
JavaScript konfiguracja
Żeby używać ścieżki absolutnej w projekcie JavaScript, należy dodać do pliku jsconfig.json taką konfigurację:
useCallback to hook, który pozwala na usprawnienie wydajności Twojej aplikacji. Konkretnie chodzi o mądre zarządzanie funkcjami używanymi przez komponent.
Za każdym razem, kiedy komponent jest renderowany, wszystkie funkcje są tworzone na nowo. Dzieje się tak na przykład przy zmianie stanu komponentu. Po co za każdym razem tworzyć funkcję na nowo? Nie lepiej robić to w przypadku, gdy to jest naprawdę konieczne? Można to zrobić za pomocą useCallback.
Działa to, w taki sposób, że useCallback zapamiętuje daną funkcję i trzyma ją w pamięci cache. A Ty określasz, kiedy dana funkcja być ponownie stworzona.
Składnia useCallback
Jeśli używałeś wcześniej useEffect składnia useCallback jest podobna:
W pierwszym parametrze przekazujesz funkcję, którą chcesz trzymać w pamięci cache.
Drugi parametr to tablica zależności. Określasz tutaj listę wartości, które React ma śledzić. Jeśli dana wartość się zmieni useCallback powinien stworzyć funkcję na nowo. Jeśli przekażesz pustą tablicę, funkcja zostanie stworzona tylko raz.
Jeśli działanie Twojej funkcji zależy od danej zmiennej powinieneś ją umieścić w tablicy zależności.
Użytkownik wprowadza dane i wynik jest obliczany przez funkcję: onCalculateTax po kliknięciu w przycisk. Używam useCallback do trzymania funkcji onCalculateTax w pamięci cache. Zauważ, że przez useCallback śledzone są dwie zmienne: salary i taxRate. Za każdym razem, gdy zmieni się wartość, którejś z nich funkcja tworzona jest na nowo. Jeśli zmienimy dane tylko w polu taxpayerName używana jest funkcja z pamięci cache.
Mamy tutaj typ Product wszystkie jego pola są wymagane. Więc jeśli spróbujesz stworzyć obiekt o typie Product nie definiując wartości dla wszystkich wymaganych pól TypeScript zgłosi błąd.
Powyższa funkcja tworzy obiekt typu Product. Przydatny builder, kiedy na przykład piszesz testy. Problem z tym kodem jest taki, gdy potrzebujesz przekazać wartości do konkretnych pól. Oczywiście możesz stworzyć obiekt i przypisać potrzebne wartości.