ასინქრონული სტეტის მენეჯმენტი
პრობლემა
api-იდან წამოღებული ინფორმაციის მენეჯმენტი და წამოღებაც კი არის გასაკვირად ჩელენჯინგი რეაქტში.
შეგვიძლია უბრალოდ დავწეროთ ასეთი რამ როცა მოგვინდება რომ წამოვიღოთ ბექიდან ინფორმაცია და გამოვიყენოთ
მაგრამ აქ უამრავი პრობლემაა. ჯერ ერთი რომ useEffect-ს ვიყენებთ ინფორმაციის წამოიღებისთვის რაც არ არის კარგი იდეა (ამაზე დეტალებში სხვა სექციაში ვისაბრებთ), ყველა სტეიტის დაჰენდვლა, ლოადინგის data-ის, ერრორის ჩვენით გვიწევს ყველა ჯერზე, ინფორმაციის ახლიდან წამოღება რომ დაგვჭირდეს მაშინ რას ვიზამთ? ანუ რომ მოგვინდეს ოპპორტუნიტების ახლიდან წამოღება როცა ახალი დაემატება, useEffect-ში ჩავამატებთ დეპენდენსის რომელსაც შევცვლით, ესეც არასწორი გამოყენება useEffect-ის, ან შეგვიძლია რომ ახლიდან დავწეროთ წამოღების ლოგიკა და ეგ ეგრე შევცვალოთ, სადაც ისევ მოგვიწევს ჩვენ ლოადინგის და ერრორის ახლიდან დაჰენდვლა.
ეს დიდ აპლიკაციაებში ძალიან მალე გაიქცევა ხელიდან და ძალიან ძნელი დასამენეჯებელი იქნება.
მენეჯმენტის გარდა მერე ქეშირება დაგვჭრირდება, retry policy, pooling, infinite scroll, პოსტ რექუესტების გაგზავნაც დაგვჭირდება, ყველა კომპონენტიდან ახლიდან რომ არ წავიდეთ ბექში ეგ დაგვჭირდება.
ეს ყველაფერი ხელით გაკეთებადია რათქმაუნდა მაგრამ საკმაოდ ბევრი საქმეა და ხელიდან იმპლიემნტაცია ამის დიდად არ ღირს.
პრობლემის მოგვარება (ვერსია 1)
უადველსი ვერსია რომ ეს მოვაგვაროთ იქნება ერთი custom hook-ს გაკეთება, სადაც არ გამოვიყენებთ useEffect-ს, რაღაცა ამდაგვარი
ეს საკმაოდ ადვილი ჰუკია მაგრამ ამის პრობლემა ის არის რომ ბევრი რაღაცა არ შეიძლება და მერე ყვეალფრის იმპლიმნეტაცია ხელით მოგივწევს, მაგრამ თU პატარა აპლიკაცია და ბევრი რექუესტის გაგზავნა არ დაგვჭირდება ამის გამოყნეება სრულიად ვალიდურია.
მთელი კოდი ჩვენი აპლიკაციის მხარეს არის და დეპენდენსები არ გვაქ
ყველა რექუესტის მოთხოვნა ერთი ადგილიდან იქნება რამე მოდიფიკაცია თუ დაგვჭირდება გლობალურად, მაგ: ქეშირება, საკმაოდ ადვილი ჩასამატებელი იქნება
არ ვიყენებთ useEffect-ს
პრობლემის მოგვარება (ვერსია 2)
tanstack გვთავაზობს საკმაოდ ბევრ რამ, რამოდენიმე tan stack query-ს ფიჩერები რომ ჩამოვთვალოთ: ქეშირება, ქეშირიებს ადვილი ინვალიდაცია და კონტროლი, გლობალური ლოადინგი, კომპონენტებს და გვერდებს შორის ინფორმაციის გაზიარება ახლიდან ბექში გაგზავნის გარეშე, background fetching, ლოადინგის და ერორის სტეიტი, post request-ების ადვილად დაჰენდვლა, გასაოცარი devtooling და სხვა ბევრი რამ, აუცულებლად გირჩევთ დოკუმენტაციას გადახედოთ იმისთვის რომ ყველაფერი იცოდეთ აქ მე არ და ვერ დავფარავ ბევრ რამეს.
რა არის tan stack query
როგორც ზემოთ ვახსენე tanstack არის ასინქრნული სტეტის მენეჯმენტის საშულება, ჩვენ როცა გვსურს რაიმე რექუესტი გაგავზავნოთ ბექში და წამოვიღეოთ ბლოგების სია ჩვენ დავწერდით ასეთ რაღაცას.
ეს კი კარგია მარა მარტო ეს რომ შეეძლოს ასე ქებას არ დავიწყებდი, ეხლა დავუშვათ მოგვინდა ამ ბლოგების გამოყენება სხვა კომპონენტში, რა შეგვიძლია რომ ვქნათ?
შეგვიძლია რომ ეს data პროპად ჩავატანოდ
შეგვიძლია იმ კომპონენტში ახლიდან გამოვიძახოთ ეს api და ახლიდან წავიდეთ ბექში (bad idea)
შეგვიძლია კონტექსტი შევქმნათ და მანდ ჩავდოთ ეს data და მერე სხვგან გამოვიყენოთ როცა გვინდა.
ესენი კი შეგვიძლია რომ ვქნათ მაგრამ რათქმაუნდა ეს ქეისი მოგვარებული აქვს tan stack-ს query key-ების საშულებით, ჩვენ შეგვიძLია რომ გადავწეროთ ზემოთ დაწერელი კოდი შემდეგნაირად
კაი და ამის დაწერა რას გვაძლევს?
როდის ჯობია tan stack query?
თუ ჩვენ გვაქ რამდენიმე გვერდი, მოგვიწევს ხოლმე ინფორმაციის ხშირად განახლება, ბევრი query პარამეტრები გვექნება, თუ ინფროამციის გაზზიარება გვჭირდება გვერდებს და კომპონენტებს შორის, თუ გვჭირდება ქეშირება, ქეშის ადვილი ინვალიდაცია, გასაოცარი დევტულინგი, ჯობია გამოიყენო tanstack query, თითქმის ყველა ქეისში თუ კომპლექსური აპლიკაციიაა და 2 ციფრში ითვლება თქვენი api request-ების რამოდენობა ჯობია tan stack გამოიყენოთ თუ რამე ტექნიკური ლიმიტიაცია არ არის თქვენთვის.
ქეშირება
ქეშის ინვალიდაცია
გლობალური კონტექსტი ინფომრაციისითვის
კარგი დევტულინგი
battle tested (საკმაოდ დიდი ხანია არსებობს ეს ლაიბრარი და ახალი სათამაშო არ არის)
სისწრაფე მიღებული useEffect-ის არ გამოიყენბით
clean api
Last updated