Czy istnieje wbudowany sposób użycia proptypów w celu zapewnienia, że tablica obiektów przekazywanych do komponentu jest w rzeczywistości tablicą obiektów o określonym kształcie?
Może coś takiego?
annotationRanges: PropTypes.array(PropTypes.shape({
start: PropTypes.number.isRequired,
end: PropTypes.number.isRequired,
})),
Czy brakuje mi czegoś bardzo oczywistego? Wydaje się, że byłoby to bardzo pożądane.
arrays
reactjs
react-proptypes
majorBummer
źródło
źródło
.isRequired
każdej właściwościReact.PropTypes.shape
. Przybyłem tutaj, ponieważ błędnie założyłem, że używając.isRequired
goReact.PropTypes.arrayOf
, nie potrzebowałem go w środku. Aby uzyskać pełną weryfikację zasięgu, faktycznie skończyłem na stosowaniu jej również bezpośrednioReact.PropTypes.shape
.arrayWithShape
jest [] (pusta tablica) Nie zawiedzie. jeśliarrayWithShape
jest {} (obiekt), nie powiedzie się. JeśliarrayWithShape
jest[{dumb: 'something'}]
(tablica bez poprawnych rekwizytów), zawiedzie. Potrzebuję go do sprawdzenia poprawności, jeśliarrayWithShape
jest pusta tablica. Chcę tylko, żeby mijało, jeśli jest niepustą tablicą z obiektami, które mają rekwizytycolor
ifontsize
. czego mi brakuje?Tak, musisz użyć
PropTypes.arrayOf
zamiastPropTypes.array
w kodzie, możesz zrobić coś takiego:Aby uzyskać więcej informacji o proptypach , odwiedź tutaj Sprawdzanie typów za pomocą PropTypes tutaj
źródło
[undefined]
przejdzie walidacjęI jest ... tuż pod moim nosem:
Z samych dokumentów dotyczących reakcji: https://facebook.github.io/react/docs/reusable-components.html
źródło
Istnieje skrót importu ES6, do którego możesz się odwoływać. Bardziej czytelny i łatwy do pisania.
źródło
Jeśli mam wielokrotnie definiować te same typy dla określonego kształtu, lubię wyodrębniać go do pliku proptypów, aby w przypadku zmiany kształtu obiektu musiałem zmienić kod tylko w jednym miejscu. Pomaga nieco wysuszyć bazę kodu.
Przykład:
źródło
To było moje rozwiązanie, aby chronić również przed pustą tablicą:
źródło