【发布时间】:2021-09-25 04:22:55
【问题描述】:
我有以下反应代码。
我想要的是当我点击“关于”菜单背景颜色应该从红色变为蓝色,否则保持红色。
在另一种情况下: (我的问题是如何在反应中访问链接“路由”或“路径”,因为我想添加条件,如 ==> if (path =="./about) do somthing...)
有没有办法做到这一点?非常感谢您的帮助。
【问题讨论】:
标签: css reactjs dynamic colors routes
我有以下反应代码。
我想要的是当我点击“关于”菜单背景颜色应该从红色变为蓝色,否则保持红色。
在另一种情况下: (我的问题是如何在反应中访问链接“路由”或“路径”,因为我想添加条件,如 ==> if (path =="./about) do somthing...)
有没有办法做到这一点?非常感谢您的帮助。
【问题讨论】:
标签: css reactjs dynamic colors routes
以下代码有效:
const Nav = styled.nav`
height: 100px;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
align-items: center;
padding: 0px 10px;
width: 100%;
z-index: 100;
/* background-color: red; */
`;
const Menu = styled.div`
display: flex;
flex-wrap: wrap;
gap: 20px;
align-items: center;
justify-content: center;
`;
const Navbar = ({ toggle }) => {
const [navBg, setNavBg] = React.useState("red");
const location = useLocation();
React.useEffect(() => {
if (window.location.pathname === "/about") {
setNavBg("yellow");
} else {
setNavBg('red')
}
}, [location]);
return (
<Nav style={{ backgroundColor: navBg }}>
<h1 to="/">logo</h1>
<Menu>
<Link to="/">home</Link>
<Link to="/about">about</Link>
<Link to="/services">services</Link>
</Menu>
</Nav>
【讨论】:
export function ChildComponent({yourState}){}; 并像这样调用它:<ChildComponent yourState={myState} />
如果您使用的是react-router-dom
然后你可以使用 useLocation 钩子来获取当前位置
先导入
import { useLocation } from 'react-router-dom';
然后获取位置
const location = useLocation();
您可以使用useEffect 挂钩在位置更改时更改背景颜色
useEffect(()=>
{
if(location.pathname == '/about'){
// Change background color
}
}
},[location])
这应该适合你
尝试将此代码包含在您的App.js中
【讨论】: