Wpis z mikrobloga

#programowanie #react #frontend
Da się jakoś wymusić wywołanie setState() w jednym komponencie, żeby drugi komponent (który wyświetla rezultat, który docelowo ma się brać właśnie z tego State) wiedział o nim zanim się wyrenderuje?

W React'cie jestem bardzo początkujący i aktualnie drugi komponent próbuje się wyrenderować zanim wywoła się setState() przez co oczywiście wywala error bo nie ma skąd wziąć wartości które są oczekiwane.
  • 17
@Radaka: problem jest następujący:
1 komponent wyświetla tabelę z wynikami w układzie [label z datą]:[wynik]
renderuje ten układ w oparciu o wpisywane dane w tym momencie, czyli podczas edycji, i jak sobie zmienię datę w kalendarzu to muszą te dane przeskakiwać: to jest jeden State

2 komponent renderuje generalny panel, który wyświetla w rowach nazwy tych tabel, które można dodawać albo edytować. Więc dopiero po tym jak pierwszy komponent zostanie edytowany
@zackson: wiem. Sęk w tym że ja nie wiem czy mogę sobie uzależnić render od tego state bo renderuje się też state z oryginalnego komponentu. Ogólnie to ja bym napisał wszystko inaczej, póki co staram się ogarnąć stary kod, ale jeśli będzie trzeba to po prostu przerobię to na jeden komponent i tyle.

JS i jego frameworki to coś pięknego... Chciałbym mieć do czynienia tylko z moim backendem ale na razie
@Pedalek: no właśnie próbowałem, ale sęk w tym że jest logika podzielona na 2 komponenty a nie mogę korzystać z metod tego pierwszego w drugim (na odwrót już tak), tak jest stworzony kod ;)

Mogę wiec przekazać state do pierwszego ale niestety nie mam kontroli nad tym kiedy się on wyrenderuje bo nie mogę wywołać callbacka z pierwszego i tak się kręci karuzela #!$%@?
w sumie troche zagmatwanie to napisales, ale mozesz dodac do state jakiegos boola, ktory zostanie zmieniony, jesli w innym komponencie ruszy juz setState (wrzuc w callback) i jesli ten bool bedzie false/ true, zwyczajnie wyswietlisz pusty element a jesli masz juz dane to wyrenderuje ci formatowane dane

ale sęk w tym że jest logika podzielona na 2 komponenty a nie mogę korzystać z metod tego pierwszego w drugim (na odwrót już tak),
@Czarzy: Tak jeszcze pomyślałem, w jaki sposób komponujesz te komponenty? Jeden jest w drugim, czy obydwa są częścią jakiegoś innego? Bo jeśli ta druga opcja, to może spróbuj przenieść całą logikę do komponentu wyżej, a te niżej uzależnić od imputu z tego wyżej.