Budowa testu

0

https://codesandbox.io/s/github/lukaszbrk/placement-test/tree/newjson

To mój pierwszy projekt w React. Buduję test językowy i mam już wykonane podstawowe elementy. Zanim zacznę dalszą pracę chcę przekonać się, czy nie robię czegoś, co mi w przyszłości utrudni zadanie, a może nawet nie da je ukończyć. Uprzedzam, że nie pracuję jako programista.

Z góry dziękuję.

0

Nazywanie Test i robienie katalogów test może być mylące, bo można pomyśleć, że są tam unit testy. Może np. Quizz?

Poza tym przemyślałbym przesyłanie danych do komponentów, bo teraz wrzucasz po prostu konsumenta kontekstu do każdego komponentu (nawet w jednym komponencie widziałem, że 2 razy używasz konsumenta).

Może przesyłać te dane przez props?

 value.questionsReady[value.activePage - 1]

To się powtarza w kilku miejscach, więc jest to duplikacja kodu. Należałoby gdzieś to wydzielić.
Poza tym za bardzo wchodzisz w strukturę danych (co jeśli questionsReady przestanie być tablicą, albo co jeśli activePage przestanie być liczbą?)

Ja bym wrzucił do value dodatkową metodę np. getPreviousQuestion, która by zwracała właśnie to, co chcesz osiągnąć (poprzednie pytanie, jak rozumiem), a szczegóły techniczne zostawiłbym obiektowi value (swoją drogą strasznie generyczna i mało opisowa nazwa. Wszystko można nazwać value).

No tak jak tak spojrzałem, to w ogóle nie chodzi o poprzednie pytanie tylko o aktualne (liczone od 1, przeliczone na liczone od zera). Czyli to w ogóle jest pokićkane i mylące, skoro nie domyśliłem się, co tam robisz.

W zasadzie po co ten konsument w ogóle? Jeśli komponent Question potrzebuje pytanie, możesz przekazać je jako właściwość już na wyższym poziomie (z pliku Test.js)
<Question question={value.questionsReady[value.activePage - 1]} />
tym sposobem komponent Question będzie te dane, których potrzebuje bez potrzeby zakładania czegokolwiek o tablicy questionsReady ani bez znajomości wartości activePage

0

W zasadzie po co ten konsument w ogóle? Jeśli komponent Question potrzebuje pytanie, możesz przekazać je jako właściwość już na wyższym poziomie (z pliku Test.js)
<Question question={value.questionsReady[value.activePage - 1]} />
tym sposobem komponent Question będzie te dane, których potrzebuje bez potrzeby zakładania czegokolwiek o tablicy questionsReady ani bez znajomości wartości activePage

Dzięki. Tak też poprawiłem, jest znacznie czytelniej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1