Używanie kontekstu React z react-konva

Stan udostępniony oznacza, że ​​zmiany w menu po lewej stronie mogą aktualizować dane używane do renderowania elementów ekranu na mapie podróży użytkownika

Kontynuując mój post dotyczący wykorzystania react-konvaw ramach reciprocal.dev do zbudowania User Journey Map , a następnie dodania powiększenia i panoramowania do wspomnianej mapy, zdecydowałem się dodać kilka ulepszeń, aby zmienić właściwości komponentów renderowanych na kanwie spoza kanwy.

Aby zaimplementować to ulepszenie, musiałem wprowadzić stan całej aplikacji, aby móc śledzić zarówno interakcję w interfejsie użytkownika innym niż kanwa, jak i aktualizować wartość w komponentach kanwy.

Aby to zrobić, zacząłem od zbudowania kontekstu, do którego mogłem następnie uzyskać dostęp, używając useContexthaka w komponentach, które potrzebowały dostępu do właściwości kontekstu wystawionego na zmianę stanu aplikacji.

Dodałem dostawcę kontekstu na poziomie komponentu głównego, aby komponenty podrzędne mogły uzyskać dostęp do kontekstu i chociaż działało to dobrze z elementami interfejsu użytkownika, które stworzyłem do wyświetlania informacji na ekranie, nie działało z komponentami na kanwie.

Komponenty, które były Stageelementami podrzędnymi elementu używanego do renderowania elementów kanwy, nie mogły uzyskać dostępu do tych właściwości z powodu problemów z zakresem.

Uzyskiwanie dostępu do kontekstu reakcji na etapie reakcji react-konva

Rozwiązanie problemu z określaniem zakresu jest stosunkowo proste, wymaga jedynie skonfigurowania innego dostawcy kontekstu w Stage.

Aby nowy dostawca mógł ponownie użyć wartości z pierwotnego dostawcy, musimy otoczyć konsumenta Stagei upewnić się, że nasz komponent dostawcy kontekstu może mieć swoją wartość ustawioną przez właściwość.

Gdy już mamy dostawcę wewnątrz Stage, możemy użyć useContexthaka w komponentach, które zostaną wyrenderowane na kanwie.

Ostateczna struktura wygląda tak:

Używanie kontekstu reakcji do aktualizacji elementów interfejsu użytkownika po zmianie stanu

Dzięki kontekstowi dostępnemu z wnętrza płótna możemy użyć tego kontekstu do aktualizacji współdzielonego stanu między elementami interfejsu użytkownika poza płótnem a tymi, które się w nim znajdują.

Po pierwsze, musimy mieć jakiś sposób na uzyskanie i ustawienie wartości, która będzie aktualizowana za pośrednictwem interfejsu użytkownika innego niż kanwa. Aby to zrobić, używamy useStatedo śledzenia wywoływanej wartości colouroraz funkcji pobierającej i ustawiającej tę wartość do dostawcy za pośrednictwem jej właściwości wartości.

Ta wartość koloru jest zmieniana w interfejsie użytkownika innym niż kanwa, który wywołujemy setColourza każdym razem, gdy użytkownik wybierze wartość z elementu wyboru koloru.

W komponentach canvas pobieramy colourwartość z kontekstu i używamy jej do ustawienia koloru użytego w komponencie.

Gdy już mamy wartość koloru odczytaną przez komponent canvas i ustaloną przez komponent inny niż canvas, możemy teraz ustawić kolor Rectpola wyboru.

Streszczenie

Chociaż ten post dotyczy bardzo prostego przypadku użycia, nie ma powodu, dla którego nie można użyć kontekstu reakcji do śledzenia stanu wielu wartości i zbudowania zaawansowanego interfejsu użytkownika, który pozwala użytkownikowi aktualizować obiekty na kanwie spoza niego.

Demonstrację stanu udostępnionego można znaleźć w przykładzie User Journey Map , który zbudowałem w ramach reciprocal.dev , ponieważ wykorzystuje podejście wspomniane w tym poście do śledzenia stanu aplikacji między interfejsem użytkownika innym niż kanwa i głównym płótnem .

Suggested posts

Wyszukiwanie informacji o nazwach domen

Fragment książki Small, Sharp Software Tools autorstwa Briana P. Hogana

Wyszukiwanie informacji o nazwach domen

Kiedy wysyłasz żądanie do facebook.com, Twój komputer wyszukuje nazwę domeny, aby przetłumaczyć tę nazwę domeny na adres IP, aby komputer mógł nawiązać to połączenie.

Unikanie niszczycielskich konsekwencji udaru mózgu: nauka z rodzinnej podróży.

Unikanie niszczycielskich konsekwencji udaru mózgu: nauka z rodzinnej podróży.

Wstęp Udar to nagły przypadek medyczny, który może dotknąć każdego w dowolnym momencie. Występuje, gdy przepływ krwi do części mózgu zostaje zakłócony, co prowadzi do nagłej utraty funkcji mózgu.

Related posts

Zbieranie OSINT na potrzeby polowania na zagrożenia

Zbieranie OSINT na potrzeby polowania na zagrożenia

Hej, cyberentuzjaści! Witamy ponownie w serii OSINT poświęconej polowaniu na zagrożenia. W pierwszym artykule przedstawiłem przegląd OSINT i jego znaczenie w polowaniu na zagrożenia.

Prześladowania chrześcijan: przestępstwo z nienawiści, o którym nie mówimy

Zapomnij o islamofobii: Chrześcijanie (i Żydzi) są głównymi ofiarami przestępstw z nienawiści na tle religijnym.

Prześladowania chrześcijan: przestępstwo z nienawiści, o którym nie mówimy

Każdy racjonalnie myślący wie, że w kręgach politycznych i medialnych dominuje lewica, nawet skrajna lewica, co powoduje zachwianie równowagi w dyskursie politycznym. W dziedzinie religii ta nierównowaga jest wyraźnie widoczna: lewicowe gazety i sieci nie spieszą się z obroną wiary chrześcijańskiej.

Kłamstwo kowbojskie

Jak megakorporacje sprzedały Amerykanom mocne kłamstwo

Kłamstwo kowbojskie

Jest wspaniale złoty poranek na falistych wzgórzach zachodu, gdy pierwsze promienie słońca oświetlają oszronioną trawę na równinach. Stado spokojnego bydła rasy Angus, czarnego jak smoła i masywne, rysuje się na tle wschodu słońca, gdy zmierza utartym szlakiem do miejsca, które wszyscy dobrze znają; bar śniadaniowy.

„Odsłonięty Rów Mariański: Odsłonięcie przerażających ukrytych prawd otchłani”

„Odsłonięty Rów Mariański: Odsłonięcie przerażających ukrytych prawd otchłani”

Wprowadzenie:Witajcie, odważni czytelnicy, w podróży, która zabierze nas w najciemniejsze głębiny naszej planety. Na tym blogu zagłębiamy się w enigmatyczny świat Rowu Mariańskiego, odkrywając jego ukryte tajemnice i odkrywając mrożące krew w żyłach prawdy, które leżą pod jego powierzchnią.