Eu sou realmente novo no React Native e estou me perguntando como posso ocultar / mostrar um componente.
Aqui está o meu caso de teste:
<TextInput
onFocus={this.showCancel()}
onChangeText={(text) => this.doSearch({input: text})} />
<TouchableHighlight
onPress={this.hideCancel()}>
<View>
<Text style={styles.cancelButtonText}>Cancel</Text>
</View>
</TouchableHighlight>
Eu tenho um TextInput
componente, o que eu quero é mostrar TouchableHighlight
quando a entrada obtém o foco e ocultar TouchableHighlight
quando o usuário pressionar o botão Cancelar.
Não sei "acessar" o TouchableHighlight
componente para ocultá-lo / mostrá-lo dentro das minhas funções showCancel/hideCancel
.
Além disso, como ocultar o botão desde o início?
javascript
react-native
Crysfel
fonte
fonte
Respostas:
Eu faria algo assim:
fonte
return ''
quereturn null
{someBoolVal && <Component />}
e ele só será exibido se o valor bool for verdadeiro.Na sua função de renderização:
Então faça:
fonte
{ this.state.showTheThing && (<Text>foo</Text> && <Text>bar</Text>)}
apenas "barra" é mostrado na interface do usuário. Eu esperava que "foo" e "bar" fossem exibidos. O que eu precisava fazer para resolver isso é para chamar{ this.state.showTheThing && (<Text>foo</Text>} { this.state.showTheThing && (<Text>bar</Text>}
&&
não combinam elementos{ 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>
Ao reagir ou reagir de forma nativa, a maneira como o componente ocultar / mostrar ou adicionar / remover não funciona como no Android ou iOS. Muitos de nós pensam que haveria uma estratégia semelhante como
Mas a maneira como reage ao trabalho nativo é completamente diferente. A única maneira de obter esse tipo de funcionalidade é incluir seu componente no seu DOM ou remover do DOM.
Aqui neste exemplo, vou definir a visibilidade da exibição de texto com base no clique do botão.
A idéia por trás dessa tarefa é criar uma variável de estado chamada state, com o valor inicial definido como false quando o evento de clique no botão acontece e o valor alterna. Agora vamos usar essa variável de estado durante a criação do componente.
a única coisa a ser observada nesse trecho é
renderIf
que, na verdade, é uma função que retornará o componente passado a ele com base no valor booleano passado a ele.fonte
em render (), você pode mostrar condicionalmente o JSX ou retornar nulo como em:
fonte
Eu precisava alternar entre duas imagens. Com a troca condicional entre eles, houve um atraso de 5 segundos sem nenhuma imagem exibida.
Eu estou usando a abordagem da resposta amos downvoted. Postando como nova resposta, porque é difícil colocar o código em comentário com a formatação correta.
Função de renderização:
Estilos:
fonte
Na maioria das vezes eu estou fazendo algo parecido com isto:
Se você é iniciante em programação, essa linha deve ser estranha para você:
Esta linha é equivalente a
Mas você não pode escrever uma condição if / else no conteúdo JSX (por exemplo, a parte return () de uma função de renderização), portanto você precisará usar essa notação.
Esse pequeno truque pode ser muito útil em muitos casos, e eu sugiro que você o use em seus desenvolvimentos, porque você pode verificar rapidamente uma condição.
Saudações,
fonte
Ocultar e mostrar a visualização principal de
Activity Indicator
Ocultar e mostrar como seguir
Referência completa
O botão Ligar pressiona o estado definido da seguinte forma
Quando você precisa se esconder
fonte
O layout do React Native tem o
display
suporte à propriedade, semelhante ao CSS. Valores possíveis:none
eflex
(padrão). https://facebook.github.io/react-native/docs/layout-props#displayfonte
position: absolute
, na verdade não esconde! Conhecido bug 0,54-0,59 (pelo menos): github.com/facebook/react-native/issues/18415Apenas use
fonte
declarar visible como false, por padrão, modal / view são hide
exemplo = () => {
}
** Chamada de função **
fonte
Eu tive o mesmo problema em que gostaria de mostrar / ocultar as visualizações, mas realmente não queria que a interface do usuário pulasse quando as coisas fossem adicionadas / removidas ou necessariamente para lidar com a nova renderização.
Eu escrevi um componente simples para lidar com isso para mim. Animado por padrão, mas fácil de alternar. Coloquei no GitHub e NPM com um leia-me, mas todo o código está abaixo.
npm install --save react-native-hideable-view
fonte
visible && (...)
.Uma opção adicional é aplicar o posicionamento absoluto via estilo , configurando o componente oculto nas coordenadas fora da tela:
Diferentemente de algumas das sugestões anteriores, isso ocultaria seu componente da visualização, MAS também o renderizará (o manterá no DOM), tornando-o realmente invisível .
fonte
Se você precisar que o componente permaneça carregado, mas oculto, pode definir a opacidade para 0. (Eu precisava disso para a câmera expo, por exemplo)
fonte
Você pode usar meu módulo react-native-display para mostrar / ocultar componentes.
fonte
O exemplo a seguir está codificando em texto datilografado com Hooks.
fonte
fonte
Muito fácil. Basta alterar para () => this.showCancel () como abaixo:
fonte
Estou apenas usando o método abaixo para ocultar ou exibir um botão. espero que ajude você. apenas atualizar o status e adicionar hide css é suficiente para mim
fonte
Na verdade, no desenvolvimento do iOS,
react-native
quando eu usodisplay: 'none'
ou algo parecido abaixo:O iOS não carrega mais nada do componente Imagem, como o
onLoad
etc, então decidi usar algo como abaixo:fonte
A única maneira de mostrar ou ocultar um componente no reagir nativo é verificar o valor de um parâmetro do estado do aplicativo como
state
ouprops
. Forneci um exemplo completo como abaixo:fonte
Se você deseja ocultá-lo, mas manter o espaço ocupado pelo componente, como a
visibility: hidden
configuração de css no estilo do componente,opacity: 0
faça o truque.Dependendo do componente, outras etapas para desativar a funcionalidade podem ser necessárias, pois é possível a interação com um item invisível.
fonte
Você pode usar as condições para mostrar e ocultar os componentes
fonte
Isso é tudo. aproveite sua codificação ...
fonte