Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

113
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!