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

254
Views
Cómo cargar la clase activa para el enlace en reaccionar

Se creó una pestaña simple para cargar componentes, las pestañas funcionan bien, pero se carga una clase "activa" para todos los Navlinks, en el renderizado. La clase "activa" debe cargarse solo para la pestaña activa. por favor ayuda a arreglar esto

 import React, { useState } from 'react'; import { NavLink, Outlet } from "react-router-dom"; function SidenavSection(props) { const [active, setActive] = useState("tab1") return ( <div> <div > <div sm="3" className='border sideNav'> <NavLink to="" className="btn btn-link" onClick={() => setActive("tab1")}>Overview</NavLink> <br/> <NavLink to="" className="btn btn-link" onClick={() => setActive("tab2")}>Align & Ratio</NavLink> <br/> <NavLink to="" className="btn btn-link" onClick={() => setActive("tab3")}>Avatar</NavLink> <br/> </div> <div sm="9" className='border'> <div> {active === "tab1" && <div>section component 1</div>} {active === "tab2" && <div>section component 2</div>} {active === "tab3" && <div>section component 3</div>} </div> </div> </div> </div> ); } export default SidenavSection;

salida de captura de pantalla

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Debe usar enrutamiento/visualización condicional usando Javascript, aquí está tratando de usar ambos.

sin enrutamiento

 import React, { useState } from 'react'; import { NavLink, Outlet } from "react-router-dom"; function SidenavSection(props) { const [active, setActive] = useState("tab1") const isActive = (key) => (active === key ? 'active' : ''); return ( <div> <div > <div sm="3" className='border sideNav'> <a href="" className=`btn btn-link ${isActive('tab1')}` onClick={() => setActive("tab1")}>Overview</a> <br/> <a href="" className=`btn btn-link ${isActive('tab2')}` onClick={() => setActive("tab2")}>Align & Ratio</a> <br/> <a href="" className=`btn btn-link ${isActive('tab3')}` onClick={() => setActive("tab3")}>Avatar</a> <br/> </div> <div sm="9" className='border'> <div> {active === "tab1" && <div>section component 1</div>} {active === "tab2" && <div>section component 2</div>} {active === "tab3" && <div>section component 3</div>} </div> </div> </div> </div> ); } export default SidenavSection;
about 4 years ago · Juan Pablo Isaza Report

0

En primer lugar, no necesita usar NavLink para esto. Puede lograr una clase activa agregando un operador ternario para los nombres de clase.

 import React, { useState } from "react"; import { NavLink } from "react-router-dom"; export default function App() { const [active, setActive] = useState("tab1"); return ( <div> <div> <div sm="3" className="border sideNav"> <p to="" className={`btn btn-link ${active === "tab1"? "active":""}`} onClick={() => setActive("tab1")} > Overview </p>{" "} <br /> <p to="" className={`btn btn-link ${active === "tab2" && "active"}`} onClick={() => setActive("tab2")} > Align & Ratio </p>{" "} <br /> <p to="" className={`btn btn-link ${active === "tab3" && "active"}`} onClick={() => setActive("tab3")} > Avatar </p>{" "} <br /> </div> <div sm="9" className="border"> <div> {active === "tab1" && <div>section component 1</div>} {active === "tab2" && <div>section component 2</div>} {active === "tab3" && <div>section component 3</div>} </div> </div> </div> </div> ); }

Sin embargo, debe intentar crear un objeto o matriz que incluya los datos de los enlaces, de modo que pueda recorrerlos fácilmente sin mucho código, y establecer un enlace activo también será más fácil de esta manera.

 import React, { useState } from "react"; import { NavLink } from "react-router-dom"; export default function App() { const [active, setActive] = useState("0"); const els = [ {tab:1, name: "Overview",}, {tab:2, name: "Avatar"}, {tab:3, name: "Align & Ratio"}, ] return ( <div> <div> <div sm="3" className="border sideNav"> { els.map((item, index)=>{ return <p onClick={()=>{setActive(index)}} key={index} className={index === active ? "active" : ""} > {item.name} </p> }) } <br /> </div> <div sm="9" className="border"> <div> {active === "tab1" && <div>section component 1</div>} {active === "tab2" && <div>section component 2</div>} {active === "tab3" && <div>section component 3</div>} </div> </div> </div> </div> ); }
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!