masz komponent Book, który przyjmuje luzem właściwości książki:
https://github.com/DamianWasilewski/LibraryApp/blob/460881804a80c77ae0ebe3bbccf614249f41c1e9/src/components/Book/Book.js#L18
przez to musisz pamiętać o ustawieniu ileś właściwości w tym miejscu
https://github.com/DamianWasilewski/LibraryApp/blob/460881804a80c77ae0ebe3bbccf614249f41c1e9/src/containers/BookList/BookList.js#L91
A mógłbyś tego uniknąć i przekazywać do komponentu po prostu cały obiekt książki:
<Book book={book} />
Czyli wygodniej, krótszy kod, mniejsza podatność na pomyłki, brak konieczności kopiowania wszystkich właściwości, odporność na zmiany w przyszłości (jak będziesz chciał dodać właściwość do obiektu książka, np. rok wydania, to dodasz ją sobie w store (czy skąd tam wyciągasz dane książek), a komponent Book będzie miał to już przekazane (a tak to, to musiałbyś w każdym miejscu, w którym wywołujesz <Book>
przekazać dodatkowo kolejną właściwość).
<FontAwesomeIcon icon="times" />
używanie bibliotek do ikon jest ok, problem tylko taki, że jak będziesz chciał kiedyś zmienić bibliotekę ikon, albo w ogóle wypieprzyć i zrobić np. dedykowaną ikonkę od grafika, to będziesz musiał w każdym miejscu zmieniać z FontAwesomeIcon
na SomeLibraryIcon
czy MyFancyIcon
. Do tego typu rzeczy lepiej robić własne komponenty, np.
const TrashIcon = () => <FontAwesomeIcon icon="trash-alt" />;
dzięki temu masz większą kontrolę i jak coś się zmieni, to zamiast wszędzie zmieniać, to tylko w jednym miejscu będziesz musiał zmodyfikować kod, np. tak:
- const TrashIcon = () => <FontAwesomeIcon icon="trash-alt" />;
+ const TrashIcon = () => <SomeOtherLibrary icon="recycle-bin" size="small" />;