Wpis z mikrobloga

#programowanie #programista15k #creaanajuniora

Potrzebuje na zadanie rekrutacyjne przygotować 3 widoki - logowanie, ekran główny i settingsy.
Zadanie robię w react.
Czy umieszczenie w reduxie state, który będzie informować główny komponent co ma wyświetlić to dobre rozwiązanie?
Przykładowo: Poprawne logowanie - dispatch do stora o zmianę state na menu - główny komponent sprawdza ten state, renderuje warunkowo - wyświetla menu? Dzięki
  • 17
@CreaOnion: React w przeglądarce? react-router, Link i Redirect. na podstawie URLa aplikacja niech rozkminia jaką podstronę wyświetlić, a na podstawie akcji niech tego urla zmienia.
w prostych aplikacjach Redux to IMO overkill, przydaje się tylko kiedy aplikacja ma rzeczywiście jakiś globalny stan współdzielony między komponentami.
no chyba że w zadaniu jawnie napisali że ma być jeden url którego masz nie tykać, to pewnie chodzi o to żeby zobaczyć czy umiesz używać reduxa :P ale słabe to zadanie wtedy.
@CreaOnion: Zdecydowanie React-router, dziwnie bym patrzył jeżeli ktoś by mi wysłał stronę z jednym oifowanym komponentem.

Co do reduxa to zależy, skoro to zadanie rekrutacyjne to warto pokazać że umiesz korzystać. Z drugiej strony można pokazać że umiesz wykorzystać nowe context api do state :P
@kao3991:
No to react-router, reduxa chciałem po prostu użyć, by pokazać, że potrafię go użyć.
Nie mam okazji zbudować czegoś większego, co by go naprawdę potrzebowało.

@laki1:
Ale to i tak będę musiał renderować warunkowo? Komponent musi zweryfikować czy użytkownik jest zalogowany i w co kliknął?
@laki1: I nie dopierdzielą się do takiej sytuacji, że wystarczy wklepać dany url strony bez logowania, by się do niej przenieść? Np. ze strony URL: .../Login wystarczy wpisać Home i pomija się cały proces logowania.
@laki1:
Ale ten state jest w innym komponencie o nazwie Login, musiałbym najpierw to zbindować to APP, a potem to propsem przepychać, więc nie rozumiem dlaczego odrzuciliście reduxa :D
@CreaOnion: Ale ja nic nie pisałem żebyś koniecznie odrzucił reduxa ¯\_(ツ)_/¯ Raczej na takie zadanie rekrutacyjne spodziewałbym się że będzie wykorzystany, zwłaszcza na stanowisko juniora.
@CreaOnion: nie słuchaj kolegów, dobrze kombinujesz. Stan autoryzacji nie ma nic do rzeczy z url - równie dobrze możesz chcieć wyświetlić/schować elementy ze względu na ten stan i dostęp. Proponuje mieć UserState gdzie trzymasz nazwe, role i inne rzeczy; Defaultowo pusty, po poprawnym login wypełniony i tyle
a potem to propsem przepychać


@CreaOnion: Raczej zrobić connect w reduxie do state żeby mieć dostęp do usera, a na wyższym poziomie po prostu nie wyświetlać componentu jeżeli user nie jest zalogowany
No jak wpiszesz /home to w tym komponencie Home sprawdzasz state czy użytkownik jest zalogowany


@laki1: Odpowiadając szerzej
Oczywiście rozumując w ten sposób,wszystko ma związek ze wszystkim :)

1. Możesz to zrobić w ten sposób, ale sprawdzanie url na poziomie ract/redux to proszenie się o kłopoty - url'e potrafią się zmieniać, trudno wykryć to na poziomie PR bez dobrego zestawu testów (string path vs typy); Poza tym wymusza dziwny flow i
@maque: Za 'sprawdzanie' urli w tym wypadku ma odpowiadać jakiś react-router, więc wpisując konkretny adres siłą rzeczy dostajesz się do jakiegoś komponentu. Prawdopodobnie zbyt skrótowo opisałem to co miałeś na myśli pisząc o specjalnym grupującym komponencie.

W dalszym ciągu uważam że zrobienie tego zadania rekrutacyjnego robiąc jeden komponent w którym sprawdzasz stan i na podstawie tego wyświetlać inne komponenty które mają być konkretnymi widokami to zły pomysł a to było oryginalnym
@laki1: @maque:
Panowie, to jest zadanie na juniora, nie na seniora :D
Poza tym i tak zawsze będzie możliwość, żeby obejść front, przecież każdy może w konsoli zmienić state albo kod źródłowy. Pomysł z reduxem jawił mi się jako intuicyjny, a nie znam innej możliwości niż renderowanie warunkowe, by decydować który widok pokazać, jeżeli macie jakiś tutorial, który mi pomoże, to bardzo proszę.