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

124
Visualizações
Invierta dos colores de texto del componente React al hacer clic en la etiqueta de entrada

Soy nuevo en React y no encontré ninguna solución a este simple problema.

Quiero revertir los colores de LangText cuando se hace clic en el botón de alternancia: inicialmente ENG es blanco y EST es negro y cada vez que se hace clic en la entrada , los colores se invierten.

Tengo archivos separados para devolver y diseñar componentes.

Traté de cambiar el color de una variable (ubicada en la parte superior del archivo de componentes de estilo) dentro de la etiqueta del componente con estilo, así que con CSS, dentro de la pseudoclase Input &:checked + span . Parecía surrealista y no funcionó de ninguna manera.

Agradecería mucho un ejemplo de cómo cambiar dos colores al mismo tiempo, en este caso. Siempre hay muy pocos ejemplos con componentes, por lo general, CSS se usa por separado, pero para mí este método es más legible y lógico.

 import React from 'react' import { Input, InputWrapper, Slider, ToggleContainer, LangText} from './LangugageToggleElements'; const LanguageToggle = ({onChange}) => { return( <ToggleContainer> <InputWrapper> <Input type="checkbox" onChange={onChange}/> <Slider> <LangText>ENG</LangText> <LangText>EST</LangText> </Slider> </InputWrapper> </ToggleContainer> )} ; export default LanguageToggle

 import styled from "styled-components"; let toggleBackground = "#000"; let textColor = "#fff"; export const ToggleContainer = styled.div` position: absolute; top: 10px; right: 20px; ` export const InputWrapper = styled.label` position: relative; display: flex; justify-content: center; text-align: center; ` export const Input = styled.input` position: absolute; left: -9999px; top: -9999px; &:checked + span { &:before { left: 52px; } } ` export const Slider = styled.span` display: flex; justify-content: center; text-align: center; cursor: pointer; width: 105px; border-radius: 100px; position: relative; transition: background-color 0.2s; color: ${textColor}; &:before { content: ""; position: absolute; top: 15px; left: 2px; width: 50px; height: 20px; border-radius: 45px; transition: 0.2s; background: ${toggleBackground}; box-shadow: 0 2px 4px 0 rgba(0, 35, 11, 0.2); } `; export const LangText = styled.p` padding-right: 5px; padding-left: 5px; z-index: 1; letter-spacing: 3px; `;
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Creo que simplemente puede usar un enlace useState para mantener la casilla de verificación y usarla para su LangText.

 <ToggleContainer> <InputWrapper> <Input type="checkbox" onChange={()=>{ onChange(); //use state hook to maitain the checkbox value }}/> <Slider> <LangText className={isChecboxValue === x ? color : invert }>ENG</LangText> <LangText className={isChecboxValue === y ? invert: color}>EST</LangText> </Slider> </InputWrapper> </ToggleContainer>
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