Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

122
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda