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

293
Views
¿Cómo cambiar el icono al mismo tiempo que cambia el tema con onClick en react js?

Logré crear un clic en el ícono para cambiar el esquema de colores de mi sitio web (línea 21 y changeTheme ), pero cuando hago clic en el ícono, también me gustaría que cambie de FaRegMoon a FaRegSun y viceversa (es decir, cuando hago clic una vez que debería cambiar a FaRegSun y cuando haga clic en él otra vez, debería cambiar a FaRegMoon

código actual:

 import React, {useState} from 'react' import { FaRegMoon, FaRegSun } from "react-icons/fa" import "./index.sass" const changeTheme = () => { const item = localStorage.getItem("theme") let theme; if (item === "light") { theme = ""; localStorage.setItem('theme', "") } else { theme = "light" localStorage.setItem('theme', 'light') } localStorage.setItem('theme', theme) document.body.className = localStorage.getItem("theme"); } const ThemeToggle = () => { return ( <div className='theme-toggle-button'> <FaRegMoon size={20} onClick={() => changeTheme() }/> </div> ) } export default ThemeToggle;
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

1.) Agregue un estado para su ícono dentro de la función ThemeToggle

 const [icon, setIcon] = useState('FaRegMoon')

2.) Agregue un parámetro a su función changeTheme.

 const changeTheme = (iconName) => { ... }

3.) Agregue el nombre del argumento del icono al que desea cambiar al hacer clic

 <FaRegMoon size={20} onClick={() => changeTheme('FaRegSun') }/>

4.) Refactorice su código ThemeToggle (utilicé un operador ternario para devolver un valor para el icono)

 const ThemeToggle = () => { const [icon, setIcon] = useState('FaRegMoon') //place your changeTheme function here with the added code const themeIsLight = (icon === 'FaRegSun'); const Icon = themeIsLight ? <FaRegSun size={20} onClick={() => changeTheme('FaRegMoon') }/> : <FaRegMoon size={20} onClick={() => changeTheme('FaRegSun') }/> return ( <div className='theme-toggle-button'> {Icon} </div> ) }

5.) por último, refactorice su función changeTheme. El componente se volvería a representar según el tema que se pasa a la función setState. agregue esta línea de código en la última línea de la función changeTheme. Esperaba que esto ayudara hermano.

 setIcon(iconName)

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!