on react-native init ProjectName
, główny plik aplikacji App.js
zawiera deklarację komponentu w następujący sposób:
const App: () => React$Node = () => {...}
Co to znaczy ta instrukcja?
Mam na myśli, jestem przyzwyczajony do komponentu zdefiniowanego jako const App = () => {...}
, więc nie rozumiem w szczególności wyrażenia pomiędzy : () => React$Node
.
javascript
reactjs
react-native
marco
źródło
źródło
Odpowiedzi:
Jego definicja typu z Flow oznacza, że stała App ma funkcję typu i zwraca ReactNode.
ReactNode jest jednym z tych typów:
ReactChild | ReactFragment | ReactPortal | boolean | null | undefined
Oznacza to, że funkcja App może zwrócić dowolny poprawny JSX (w native reaguje na to wszystko z View, Text, .etc), ReactFragment, React.Portal, boolean, null, undefined
Jeśli masz wątpliwości co do znaku dolara, oto link z wyjaśnieniem. https://www.saltycrane.com/flow-type-cheat-sheet/latest/
Istnieją osobne sekcje dla typów „prywatnych” lub „magicznych” z $ w nazwie. Zobacz notatkę tutaj i skomentuj tutaj. Aktualizacja: niektóre typy są teraz udokumentowane tutaj.
Dla ułatwienia możesz myśleć o tym jak o
Node
pochodzeniuReact
(pomyśl o tym jako o zasięgu / przestrzeni nazw)źródło
ReactNode
bez$
React$Node
. Czy możesz mi pomóc wyjaśnić ten punkt?React$Node
(znak dolara ...), to znaczy, w Flow doc nie ma na to odniesieniaReact $ Node jest typem zdefiniowanym w React.js
źródło
Jest to również rodzaj deklaracji składnika aplikacji jako funkcji, ale można go zmienić na
Nie zapomnij usunąć oświadczenia Eksportuj domyślną aplikację w ostatnim wierszu.
źródło