Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

230
Visualizações
React Native, onPress cambia el color del borde de TextInput

tengo entrada de texto y botón de envío, al presionar el botón de envío comprueba si el nombre. la longitud es mayor que 2 si no lo es, entonces quiero cambiar el estilo de entrada de texto para que el color del borde del ejemplo sea rojo.

 let name = '' return(<View> <TextInput onChangeText={(e)=>{name = e}} style={styles.textInput} placeholder='Name and Surname'/> <TouchableOpacity onPress={()=>{ if(name.length <= 2){ // What i need to write here to change the TextInput borderColor to red } }} > <Text style={styles.submitButton} >Submit</Text> </TouchableOpacity> </View>)

Traté de hacer nameError - useState variable - y funciona, pero cuando nameError lo cambia, vuelve a representar el componente y el valor de TextInput va a estar vacío, pero quiero que el valor de TextInput sea exactamente el mismo, solo que cambie el borderColor

 let name = '' let [nameError, setNameError] = useState(false) return(<View> <TextInput onChangeText={(e)=>{name = e}} style={nameError ? {...styles.textInput, borderColor: 'red'} : {...styles.textInput, borderColor: 'green'}} placeholder='Name and Surname'/> <TouchableOpacity onPress={()=>{ if(name.length <= 2){ setNameError(true) //This work and it change borderColor, but it chage value of useState state and component rerender and TextInput is going to be empty but i want to be the same as it was before i clicked submit button not to be empty } else{ setNameError(false) } }} > <Text style={styles.submitButton} >Submit</Text> </TouchableOpacity> </View>)

Perdón por explicar mal, no sé muy bien inglés.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Debe agregar un estado para el nombre en lugar de configurarlo como una variable que modifica su código:

 // DELETE THIS LINE let name = '' const [name, setName] = useState(''); //ADD this line and please note I added value={name} to TextInput let [nameError, setNameError] = useState(false) return(<View> <TextInput value={name} onChangeText={(e)=>{setName(e)}} style={nameError ? {...styles.textInput, borderColor: 'red'} : {...styles.textInput, borderColor: 'green'}} placeholder='Name and Surname'/> <TouchableOpacity onPress={()=>{ if(name.length <= 2){ setNameError(true) //This work and it change borderColor, but it chage value of useState state and component rerender and TextInput is going to be empty but i want to be the same as it was before i clicked submit button not to be empty } }} > <Text style={styles.submitButton} >Submit</Text> </TouchableOpacity> </View>)

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda