ჩაშენებული ჰუკები
აქ მინდა უბრალოდ ვისაბრო სხდასხვა ჰუკებზე და როდის ჯობია გამოვიყენოთ და პაწუკა რჩევები.
ერთი წესი რაც ყველას ეხება ის არის რომ სულ. სულ. სულ. სულლლლლლლლ....... უნდა გაწეროთ ტიპები
UseState
თუ ჩვენ რაიმე კომპლექსური value-ს გადაცემა გვინდა initial value-დ მაშინ უმჯობესია თუ ცალკე ფუნქციაში გავიტანთ ამ ლოგიკას
ინიციალიზაციის ფუნქცია არ გამოვიძახოთ ინლაინ, ეგრევე რეფერენსი ჯობია გადაცეთ და თვითონ რეაქტმა ჯობია გამოიძახოს როცა დაჭირდება.
მარტო updater state-ს თავი ავარიდოთ, ანუ ისეთ სტეიტს, რომელსაც მარტო იმისთვის ვიყნებთ რომ კომპონენტი დავააპდეითოთ. თუ ეს გვჭირდება რაღაცა ფუნდამენტალურად არასწორი ხდება.
useRef
ეს ჰუკი არ გეგონოთ მარტო იმისთვის რომ dom element-ების რეფერენსები შევინახოთ. აქ ასევე შეგვიძლია შევინახოთ ისეთი ცვლადები, რომლებმაც არ უნდა გამოწვიოს რერენდერინგი კომპონენტის. თუ შევადარებთ ამ ჰუკს useState-ს, იგი მას გავს იმ კუთხით, რომ მისი გამოყენებით შეგვიძლია რენდერიდან რენდერამდე შევინახოთ რაღაც მონაცემი. ხოლო განსხვავებით useState-სგან, useRef-ის შემთხვევაში მონაცემის დააპდეიტება DOM-ის რერენდერს არ გამოიწვევს.
UseEffect
ეს ჰუკია რომელზეც ალბათ ყველაზე ბევრ ცუდ "ჭორს" გაიგებთ და სამწუხაროდ ამ ჭორების უმეტესობა რეალობაა
არ გამოიყენოთ data fetching-ისთვის
არ გამოიყენოთ მშობელ კომპონენტთან ინფორმაციის დასიკვისთვის და მერე ლოკალურად setState-ის გაშვებისთვის. თუ ეს გიწევთ რაღაცას არასწორად აკეთებთ მარა თუ აუცილებლად გჭირდება მაშინ ეს ლოკალური state ref-ად რომ გადააკეთოთ უმჯობესი იქნება
useEffect არ გამოიყენოთ state-ისთვის initial ინფორმაციის მიცემისთვის, ამისთვის setState და უმეტესობა ჰუკს ინიცალიზატორი აქვს და ჯობია ეგ გამოყენოთ
ამ ჰუკის დანიშნულება არის რომ რეაქტის გარეთ რაც არსებობს იმასთან მოახდინოთ ინტერაქცია როგორიც არის გარე library-ები. window/localStorage და ასე შემდეგ და მხოლოდ ამ დანიშნულებისთვის უნდა გამოიყენოთ. avoid useEffect like a plague
don't overuse this hook. its a mistake in most places
მიუხედავად იმისა რომ ყველა ამბობს რომ სულ უნდა გავატანოთ ყვეალფერი რასაც ვიყენებთ dependency array-ში ეს მთლად სიმართლე არ არის და ყოველთვის არ არის ეს საჭირო. კარგად დაფიქრდით და მარტო მაშინ ჩაამატეთ თუ რეალურად უნდა განახდლეს ამ ცვლადის ცვილებაზე useEffect თუ არა მარტო მაშინ უნდა გაწეროთ როცა ეს useEffect ინტერაქციასთან შედის კომპონენტის გარე ობიექტზე, ანუ თუ ჩვენ გვაქ რამე ევენტ ლისთენერი ჩაბმული window-ზე და ამ ლისთენერის შიგნით ვიყენებთ რაიმე state-ს. ამ შემთხვევაში აუცილებლად უნდა გავწეროთ ეს state dependency array-ში რომ ცვილება აიასხოს მაგრამ თუ ჩვენ რაიმე ცვლადს მაინც რეაქტის კონტექსტში ვიყენებთ მაშინ გატანება არ არის საჭირო.
useReducer
ეს ჰუკი გავს useState-ს მაგრამ მაინც დაფიქრდით რამდენად გჭირდებათ და მხოლოდ მაშინ გამოიყენეთ. ამ ჰუკის გამოყნების პატერნი ისეთია რომ dispatch ხდება რაიმე action-ის და მერე თვითონ რედიუსერი ჰენდალვს ამ ლოგიკას რაც საკმაოდ კარგია მაგრამ უმეტესობა შემთხვევაში თუ ამ ლოგიკას მარტო ერთგან ვიყენებთ ჯობია ეს ჰუკი არ გამოვიყენოთ და useState-ს დავჯერდეთ, რადგან მიუხედავად იმისა, რომ კარგი ჰუკია მაინც კომპლექსურს ხდის უფრო აპლიკაციას და მთლად კარგი გამოსაყენებელი არ არის typescript-ითაც კი
useInsertionEffect
ამ ჰუკის დანიშნულება და მიზანი უფრო ლაიბრარებისთვის არის ასერომ აპლიკაციაში თუ გჭირდებათ დარწმუნდით რომ ნამდვილად საჭიროა რადგანაც მისი დანიშნულება css in js ლაიბრარებისთვის არის და თუ ეს გჭირდებათ, კიდევ დაფიქრდით შეიძლება useLayoutEffect/useEffect აკმაყოფილებს თქვენ მოთხოვნებს
useLayoutEffect
ეს ჰუკი გავს useEffect-ს მაგრამ იგივე არ არის, ეს ჰუკი მაშინ გამოიყენოთ თუ css-ს ეხებით useEffect-იდან ან ისეთ რამეს რაც უზერმა უდნა დაინახოს ეგრევე და flashing არ უდნა იყოს გვერდზე.
არ დაგავიწყდეთ რომ ეს ჰუკი რენდერინგს ბლოკავს და ინტენსიური ლოგიკა არ გაუშვათ შიგნით.
useSyncExternalStore
ეს ჰუკი არის კიდე ერთერთი ჩამანცვლებელი useEffect-ისა და თუ შეგიძლიათ ამ ჰუკის გამოყნეება ჯობია useEffect-ს თავი აარიდოთ და ეს გამოიყენოთ. საკმაოდ კარგი ჰუკია და გამოყენებას თუ უპოვით ძალიან კარგი ჰუკია და გარეთ ობიექტთან დასინკვა ჯობია useEffect-ით ევენტების ჩაბმას.
useTransition
ეს ჰუკი ახალი დანამატია რეაქტში და საკმაოდ კარგია თუ რაიმე მძიმე ოპერაციას გამოიწვევს ჩვენი ჰუკი, ანუ დავუშვათ და ჩვენ გვინდა რომ ტაბი შეცვალოთ გვერდის state-ით და მეორე ტაბზე როცა გადადის ჩვენი კომენპენტი შეიძლება დარენდერებას დიდი ხანი მოუნდეს და ასეთ დროს თუ ამ სტეიტის ცვილებას გავახვევთ useTransition-ში მაშინ უსერს ამ სინელეს კი მოუწევს რომ დაელოდოს მაგრამ ეკრანი არ გაიყინება და უსერი ინტერაქციას შეძლებს რაც ყოველთვის კარგია
ყველგან არ გამოვიყენოთ ეს ჰუკი. ყველაფერს თავისი ფასი აქვს და ამ ჰუკსაც აქვს თავისი ფასი, ასერომ თუ მართლა არ გვჭირდება, თავი ავარდიდოთ გამოყენებას
isPending-ის საშულებით ლოადერიც გამოაჩინეთ ხოლმე ^^ ეგეც საჭიროა
useMemo
ეს ჰუკი ცოტახანში აღარ იქნება გამოყენებაში, მაგრამ მაინც ავხსნი
ამაზე ალბათ ისედაც იცით რომ მინიმუმამდე უნდა დავიყვანოთ ამისი გამოყნება და უბრალოდ ზედმეტ ჩეკებს ამატებს მაგრამ თუ რაიმე ძნელი კალკულაცია ხდება its always worth it. ეს ჰუკი უბრალოდ იმ დეპენდენსი მასივს რაც კი დიდი დრო დაჭIრდება მარა დაფიქრდით რომელს უფრო დიდი დრო მოუნდება პატარა მასივს გადალუპვა თუ მძიმე კოდის გაშვებას. ეს გადაწონეთ და ასე გადაწყვითეთ საჭირო არის თუ არა მემოს გამოყნება
useCallback
ამაზეც იგივეს თქმა შემიძლია რაც მემოზე. სხვა ახალი არაფრია
Last updated