Atividade 20: Condicional (Esconder Elementos)
"Clique aqui para ver a senha". Aprenda como o State faz elementos inteiros aparecerem ou voltarem para o limbo do vazio.
🎯 Objetivos desta aula
-
✓
Usar Estados Booleanos (
true / false) - ✓ Criar funções Toggle (Alavanca que inverte valores)
- ✓ Sintaxe de Operador Lógico `&&` e Ternário `? :` direto no Fluxo de Telas (JSX)
👻 O Operador Mágico da Visibilidade
Muitas abas funcionam baseado num clique. Ou uma aba está "Aberta/Aparecendo" ou ela está Mínimizada
(Nula/Invisível).
Para isso usamos o poderoso Hook de um booleano: const [taVisivel, setTaVisivel] = useState(false). E Injetamos ele
no meio do HTML da nossa Tela para servir de "Guarda Costas" do nosso Título:
A Sintaxe E Comercial: `&&`
Dentro do nosso <Return> HTML não se pode
escrever um if(visivel == true) return comum. O React
inventou uma mágica usando Bigodes de Variáveis e Dois e-comerciais:
<View>
{ taVisivel && <Text> Eu sou o Segredo Oculto e Fui Revelado!! </Text> }
</View>
A Tática do `&&` diz ao React: "SE a variável for TRUE, desenhe as tags a frente dela. Se for FALSE desintegre as tags como se elas nunca tivessem existido no código."
🔌 O Interruptor (Toggle): Para não precisar ter 2 funções (Uma pra ligar e
outra apagar), nós usamos a exclamação `!` do javascript. A exlamação inverte o valor de um
boolean. Então a nossa função botão será literalmente: setTaVisivel( !taVisivel ); ("Torne a váriável visivél O
CONTRÁRIO do que ela está agora"). E com um só botão fazemos a luz piscar infinito.
💻 Revelando a Imagem
Com o State "Controlando" a barreira `&&`, a tela vai explodir de dinamicidade. E de quebra usaremos
ele no texto do botão atravé de um famoso If Ternário (O If de 1
linha):
import React, { useState } from 'react';
import { View, Text, TouchableOpacity, Image, StyleSheet } from 'react-native';
export default function App() {
// Criando berço inicial: FALSO (Escondido)
const [visivel, setVisivel] = useState(false);
// Botão Interruptor que inverte. Se é true fica false.
function alternar() {
setVisivel(!visivel);
}
return (
<View style={styles.container}>
<TouchableOpacity style={styles.btn} onPress={alternar}>
{/* USAMOS O IF DE UMA LINHA DE "PERGUNTA ?" NO MEIO DO NOME DO BOTÃO! */}
<Text style={styles.btnTxt}>
{ visivel ? "Esconder Foto 🙈" : "Revelar Foto 🐵" }
</Text>
</TouchableOpacity>
{/* A BARREIRA INTRANSÍVEL DO &&. SÓ PASSA O CÓDIGO SE O BOOLEAN FOR TRUE! */}
{ visivel && (
<View style={styles.card}>
<Image
source={{uri:"https://reactnative.dev/img/tiny_logo.png"}}
style={{width:100, height:100}}
/>
<Text style={{color:'white', marginTop:10}}>Surpresa!</Text>
</View>
) }
</View>
);
}
const styles = StyleSheet.create({
container: { flex: 1, backgroundColor: '#0f172a', alignItems: 'center', justifyContent: 'center' },
btn: { backgroundColor: '#8b5cf6', padding: 20, borderRadius: 10, marginBottom: 30 },
btnTxt: { color: 'white', fontWeight: 'bold', fontSize: 18 },
card: { padding: 30, backgroundColor: '#334155', borderRadius: 20, alignItems:'center' }
});
🎮 Desafios Práticos
Inversão de Valores 🛠️
- Copie e Execute o APP no Site do EXPO. Tente Clicar Repetidas Vezes..
- Brinque com a Barreira do E-Comercial Duplo
&&: mude-o para a exclamação do NOT Javascript:{!visivel && (...)}. O que acontece agora com a foto? De repente o App inteiro inverteu a sua lógica!
Ternário e Segurança 🚀
Volte o código ao original. Agora altere as strings do Ternário Pergunta (?).
- O Ternário `TIPO ? SIM : NÃO` é perfeito para mostrar 1 de 2 Opções de String.
- Tente criar no seu caderno 1 Ternário que mostre a sua Senha e um cadeado no `SIM`, ou a palavra secreta '*Senha Oculta*' no caso de ela não estar visível no lado do `NÃO` do ternário, alterando a função toggle!