【发布时间】:2022-01-18 13:51:48
【问题描述】:
我有一个问题。我希望我的链接的样式根据状态而改变。但问题是,在更新样式之前,我必须单击链接两次。但是当我使用 e.prevetndefault 时,当我单击链接时会应用样式但我无法转到该页面。这是代码。
function Footer(){
const [activeValue, setIsActive] = useState("0")
return(
<div className="footer">
<ul className="socials">
<li><a href=""> <i className="fab fa-facebook-f"></i> </a></li>
<li><a href=""> <i className="fab fa-instagram"></i> </a></li>
<li><a href=""> <i className="fab fa-twitter"></i> </a></li>
<li><a href=""> <i className="fas fa-podcast"></i> </a></li>
<li></li>
<li><Link to="/peepNews" onClick={()=>{setIsActive("1")}} style={activeValue=="1"?{color:"#0B77BE",fontWeight:"600"}:null} >Peep News</Link></li>
<li><Link to="/faq" onClick={()=>{setIsActive("2")}} style={activeValue=="2"?{color:"#0B77BE",fontWeight:"600"}:null} >FAQ</Link></li>
<li><a href="" style={{color:"gray", fontWeight:"200"}}>Careers</a></li>
<li><Link to="/legal" onClick={()=>{setIsActive("3")}} style={activeValue=="3"?{color:"#0B77BE",fontWeight:"600"}:null} >Legal</Link></li>
<li><a href="https://jupeglobal.com/venture-capital/">Jupe Global </a></li>
</ul>
</div>
);
}
编辑: 这是我添加 useEffect 钩子的时候。但问题是每当页面重新渲染时,activeValue 都会被设置回默认值(0)而不是 1、2、3 等。
function Footer(){
const [activeValue, setIsActive] = useState("0")
useEffect(() => {
setIsActive(activeValue) ;
alert(activeValue);
},[activeValue])
return(
<div className="footer">
<ul className="socials">
<li><a href=""> <i className="fab fa-facebook-f"></i> </a></li>
<li><a href=""> <i className="fab fa-instagram"></i> </a></li>
<li><a href=""> <i className="fab fa-twitter"></i> </a></li>
<li><a href=""> <i className="fas fa-podcast"></i> </a></li>
<li></li>
<li><Link to="/peepNews" onClick={()=>{setIsActive("1")}} style={activeValue=="1"?{color:"#0B77BE",fontWeight:"600"}:null} >Peep News</Link></li>
<li><Link to="/faq" onClick={()=>{setIsActive("2")}} style={activeValue=="2"?{color:"#0B77BE",fontWeight:"600"}:null} >FAQ</Link></li>
<li><a href="" style={{color:"gray", fontWeight:"200"}}>Careers</a></li>
<li><Link to="/legal" onClick={()=>{setIsActive("3")}} style={activeValue=="3"?{color:"#0B77BE",fontWeight:"600"}:null} >Legal</Link></li>
<li><a href="https://jupeglobal.com/venture-capital/">Jupe Global </a></li>
</ul>
</div>
);
}
【问题讨论】:
标签: reactjs react-native hyperlink react-router-dom