Jestem naprawdę nowy w React Native i zastanawiam się, jak mogę ukryć / pokazać komponent.
Oto mój przypadek testowy:
<TextInput
onFocus={this.showCancel()}
onChangeText={(text) => this.doSearch({input: text})} />
<TouchableHighlight
onPress={this.hideCancel()}>
<View>
<Text style={styles.cancelButtonText}>Cancel</Text>
</View>
</TouchableHighlight>
Mam TextInput
komponent, chcę pokazać, TouchableHighlight
kiedy dane wejściowe otrzymają fokus, a następnie ukryć, TouchableHighlight
kiedy użytkownik naciśnie przycisk Anuluj.
Nie wiem, jak uzyskać dostęp do TouchableHighlight
komponentu, aby ukryć / pokazać go w moich funkcjach showCancel/hideCancel
.
Jak mogę ukryć przycisk od samego początku?
javascript
react-native
Crysfel
źródło
źródło
Odpowiedzi:
Zrobiłbym coś takiego:
źródło
return ''
nareturn null
{someBoolVal && <Component />}
a pokaże się tylko wtedy, gdy wartość bool jest prawdziwa.W swojej funkcji renderującej:
Następnie po prostu wykonaj:
źródło
{ this.state.showTheThing && (<Text>foo</Text> && <Text>bar</Text>)}
tylko „pasek” jest wyświetlany w interfejsie użytkownika. Spodziewałbym się, że wyświetlą się „foo” i „bar”. To, co musiałem zrobić, aby to rozwiązać, to zadzwonić{ this.state.showTheThing && (<Text>foo</Text>} { this.state.showTheThing && (<Text>bar</Text>}
&&
nie łączy elementów{ this.state.showTheThing && (<View><Text>foo</Text><Text>bar</Text></View>)}
{this.state.hasPic && <Button title="Go to next step" onPress={this._nextStep} />}
<React.Fragment><Text>Foo</Text><Text>Bar></Text></React.Fragment>
Reagując lub reaguj natywnie, sposób, w jaki komponent ukryj / pokaż lub dodaj / usuń nie działa jak w systemie Android lub iOS. Większość z nas uważa, że byłaby podobna strategia
Ale sposób, w jaki reagują na rodzime prace, jest zupełnie inny. Jedynym sposobem osiągnięcia tego rodzaju funkcjonalności jest włączenie komponentu do DOM lub usunięcie z DOM.
W tym przykładzie ustawię widoczność widoku tekstu na podstawie kliknięcia przycisku.
Ideą tego zadania jest utworzenie zmiennej stanu o nazwie stan, której wartość początkowa jest ustawiona na fałsz, gdy nastąpi zdarzenie kliknięcia przycisku, a następnie zostanie przełączona. Teraz użyjemy tej zmiennej stanu podczas tworzenia komponentu.
jedyną rzeczą, na którą należy zwrócić uwagę w tym fragmencie, jest fakt, że jest
renderIf
to funkcja, która zwróci przekazany jej komponent na podstawie przekazanej wartości logicznej.źródło
w render () możesz warunkowo pokazać JSX lub zwrócić wartość null jak w:
źródło
Musiałem przełączać się między dwoma obrazami. Przy warunkowym przełączaniu między nimi następowało 5-sekundowe opóźnienie bez wyświetlania obrazu.
Używam podejścia z obniżonej odpowiedzi amos. Publikowanie jako nowa odpowiedź, ponieważ trudno jest umieścić kod w komentarzu przy odpowiednim formatowaniu.
Funkcja renderowania:
Style:
źródło
Przez większość czasu robię coś takiego:
Jeśli programowanie jest dla Ciebie nowością, ta linia musi być dla Ciebie dziwna:
Ta linia jest odpowiednikiem
Ale nie możesz napisać warunku if / else w treści JSX (np. Część return () funkcji renderującej), więc będziesz musiał użyć tej notacji.
Ta mała sztuczka może być bardzo przydatna w wielu przypadkach i sugeruję użycie jej w twoich opracowaniach, ponieważ możesz szybko sprawdzić stan.
Pozdrowienia,
źródło
Ukryj i pokaż widok rodzica
Activity Indicator
Ukryj i pokaż jako obserwuj
Pełne odniesienie
Przycisk włączania ustawia stan w następujący sposób
Kiedy musisz się ukryć
źródło
Układ React Native ma
display
obsługę właściwości, podobnie jak w CSS. Możliwe wartości:none
iflex
(domyślnie). https://facebook.github.io/react-native/docs/layout-props#displayźródło
position: absolute
, tak naprawdę tego nie ukrywa! Znany błąd od 0,54 do 0,59 (przynajmniej): github.com/facebook/react-native/issues/18415po prostu użyj
źródło
Miałem ten sam problem, w którym chciałbym pokazać / ukryć widoki, ale naprawdę nie chciałem, aby interfejs użytkownika skakał po dodaniu / usunięciu rzeczy lub koniecznie zajmował się ponownym renderowaniem.
Napisałem prosty komponent, aby sobie z tym poradzić. Animowany domyślnie, ale łatwy do przełączenia. Umieściłem to na GitHubie i NPM z plikiem readme, ale cały kod jest poniżej.
npm install --save react-native-hideable-view
źródło
visible && (...)
.Dodatkową opcją jest zastosowanie pozycjonowania bezwzględnego poprzez stylizację , ustawiając ukryty komponent we współrzędnych poza ekranem:
W przeciwieństwie do niektórych poprzednich sugestii, spowoduje to ukrycie komponentu przed widokiem, ALE również go wyrenderuje (zachowa w DOM), czyniąc go naprawdę niewidocznym .
źródło
Deklaruj widoczne fałsz, więc domyślnie modalne / widok są ukryte
example = () => {
}
** Wywołanie funkcji **
źródło
Jeśli chcesz, aby komponent pozostał załadowany, ale ukryty, możesz ustawić krycie na 0. (potrzebowałem tego na przykład dla kamery expo)
źródło
Możesz użyć mojego modułu react-native-display, aby pokazać / ukryć komponenty.
źródło
Poniższy przykład to kodowanie w maszynie z hookami.
źródło
źródło
Bardzo łatwe. Po prostu zmień na () => this.showCancel () jak poniżej:
źródło
używam tylko poniższej metody, aby ukryć lub wyświetlić przycisk. mam nadzieję, że ci to pomoże. wystarczy aktualizacja statusu i dodanie hide css
źródło
Właściwie w rozwoju iOS,
react-native
kiedy używamdisplay: 'none'
lub coś takiego jak poniżej:IOS nie ładuje niczego innego z komponentu Image, takiego
onLoad
itp., Więc zdecydowałem się użyć czegoś takiego jak poniżej:źródło
Jedynym sposobem pokazania lub ukrycia komponentu w React Native jest sprawdzenie wartości parametru stanu aplikacji, takiego jak
state
lubprops
. Podałem pełny przykład, jak poniżej:źródło
Jeśli chcesz to ukryć, ale zachować miejsce zajmowane przez komponent, takie jak
visibility: hidden
ustawienie css w stylu komponentu,opacity: 0
powinno załatwić sprawę.W zależności od komponentu mogą być wymagane inne kroki w celu wyłączenia funkcji, ponieważ możliwa jest interakcja z niewidocznym elementem.
źródło
Możesz użyć warunków do pokazania i ukrycia komponentów
źródło
to wszystko. miłego kodowania ...
źródło