Je suis vraiment nouveau sur React Native et je me demande comment puis-je masquer / afficher un composant.
Voici mon cas de test:
<TextInput
onFocus={this.showCancel()}
onChangeText={(text) => this.doSearch({input: text})} />
<TouchableHighlight
onPress={this.hideCancel()}>
<View>
<Text style={styles.cancelButtonText}>Cancel</Text>
</View>
</TouchableHighlight>
J'ai un TextInput
composant, ce que je veux, c'est afficher le TouchableHighlight
moment où l'entrée obtient le focus, puis le masquer TouchableHighlight
lorsque l'utilisateur appuie sur le bouton d'annulation.
Je ne sais pas comment "accéder" au TouchableHighlight
composant pour le cacher / le montrer dans mes fonctions showCancel/hideCancel
.
Aussi, comment puis-je masquer le bouton dès le début?
javascript
react-native
Crysfel
la source
la source
Réponses:
Je ferais quelque chose comme ça:
la source
return ''
enreturn null
{someBoolVal && <Component />}
et cela ne montrera que si la valeur booléenne est vraie.Dans votre fonction de rendu:
Alors faites simplement:
la source
{ this.state.showTheThing && (<Text>foo</Text> && <Text>bar</Text>)}
seule "barre" est affichée dans l'interface utilisateur. Je m'attendrais à ce que "foo" et "bar" soient affichés. Ce que j'ai besoin de faire pour résoudre ce problème, c'est d'appeler{ this.state.showTheThing && (<Text>foo</Text>} { this.state.showTheThing && (<Text>bar</Text>}
&&
ne combine pas les éléments{ 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>
En réaction ou en réaction native, la façon dont le composant cacher / afficher ou ajouter / supprimer ne fonctionne pas comme dans Android ou iOS. La plupart d'entre nous pensent qu'il y aurait une stratégie similaire comme
Mais la façon dont réagissent le travail natif est complètement différente. Le seul moyen d'obtenir ce type de fonctionnalité est d'inclure votre composant dans votre DOM ou de le supprimer du DOM.
Ici, dans cet exemple, je vais définir la visibilité de la vue du texte en fonction du clic sur le bouton.
L'idée derrière cette tâche est de créer une variable d'état appelée état dont la valeur initiale est définie sur false lorsque l'événement de clic sur le bouton se produit, puis sa valeur bascule. Nous allons maintenant utiliser cette variable d'état lors de la création du composant.
la seule chose à remarquer dans cet extrait de code est de savoir
renderIf
qui est en fait une fonction qui retournera le composant qui lui est passé en fonction de la valeur booléenne qui lui est passée.la source
dans render (), vous pouvez afficher conditionnellement le JSX ou retourner null comme dans:
la source
J'avais besoin de basculer entre deux images. Avec la commutation conditionnelle entre eux, il y avait un délai de 5 secondes sans image affichée.
J'utilise l'approche de la réponse amos votée à la baisse. Publier comme nouvelle réponse car il est difficile de mettre du code en commentaire avec un formatage approprié.
Fonction de rendu:
Modes:
la source
La plupart du temps, je fais quelque chose comme ceci:
Si vous êtes un peu novice en programmation, cette ligne doit vous être étrange:
Cette ligne équivaut à
Mais vous ne pouvez pas écrire une condition if / else dans le contenu JSX (par exemple la partie return () d'une fonction de rendu), vous devrez donc utiliser cette notation.
Cette petite astuce peut être très utile dans de nombreux cas et je vous suggère de l'utiliser dans vos développements car vous pouvez vérifier rapidement une condition.
Cordialement,
la source
Masquer et afficher la vue parent de
Activity Indicator
Masquer et afficher comme suit
Référence complète
Les pressions sur le bouton définissent l'état comme suit
Quand tu as besoin de te cacher
la source
La mise en page de React Native prend en charge la
display
propriété, similaire à CSS. Valeurs possibles:none
etflex
(par défaut). https://facebook.github.io/react-native/docs/layout-props#displayla source
position: absolute
, cela ne le cache pas! Boguejuste utiliser
la source
J'ai eu le même problème où je voudrais afficher / masquer les vues, mais je ne voulais vraiment pas que l'interface utilisateur saute lorsque des éléments ont été ajoutés / supprimés ou nécessairement pour traiter le re-rendu.
J'ai écrit un composant simple pour m'en occuper pour moi. Animé par défaut, mais facile à basculer. Je l'ai mis sur GitHub et NPM avec un readme, mais tout le code est ci-dessous.
npm install --save react-native-hideable-view
la source
visible && (...)
.Une option supplémentaire consiste à appliquer un positionnement absolu via le style , en définissant le composant masqué en coordonnées hors écran:
Contrairement à certaines des suggestions précédentes, cela masquerait votre composant de la vue MAIS le rendra également (le conservera dans le DOM), le rendant ainsi vraiment invisible .
la source
déclarer visible false donc par défaut modal / view sont hide
exemple = () => {
}
** Appel de fonction **
la source
Si vous avez besoin que le composant reste chargé mais masqué, vous pouvez définir l'opacité sur 0. (J'en avais besoin pour la caméra expo par exemple)
la source
Vous pouvez utiliser mon module react-native-display pour afficher / masquer les composants.
la source
L'exemple suivant est le codage en typographie avec Hooks.
la source
la source
Très facile. Changez simplement en () => this.showCancel () comme ci-dessous:
la source
J'utilise juste la méthode ci-dessous pour masquer ou afficher un bouton. j'espère que cela vous aidera. il me suffit de mettre à jour le statut et d'ajouter hide css
la source
En fait, dans le développement iOS
react-native
lorsque j'utilisedisplay: 'none'
ou quelque chose comme ci-dessous:L'iOS ne charge rien d'autre du composant Image comme
onLoad
ou etc., j'ai donc décidé d'utiliser quelque chose comme ci-dessous:la source
La seule façon d'afficher ou de masquer un composant dans react native est de vérifier la valeur d'un paramètre d'état d'application comme
state
ouprops
. J'ai fourni un exemple complet comme ci-dessous:la source
Si vous souhaitez le masquer tout en gardant l'espace occupé par le composant comme le
visibility: hidden
paramètre css dans le style du composantopacity: 0
devrait faire l'affaire.En fonction du composant, d'autres étapes de désactivation de la fonctionnalité peuvent être nécessaires car une interaction avec un élément invisible est possible.
la source
Vous pouvez utiliser les conditions pour afficher et masquer les composants
la source
c'est tout. profitez de votre codage ...
la source