【发布时间】:2020-09-14 14:28:03
【问题描述】:
当我有组件 Header 并且在 Header 内部将道具传递给 Navbar 时,我遇到了问题,但现在我需要从 Navbar 内部的 Header 更改道具的状态。在 Navbar 中,我需要以某种方式访问 menuState 并能够更改状态,我需要将其传递给 styled-components。
标题:
<HeaderWrapper>
<HeaderLogo>
<Link to={"/"}>
<img src={''} height="45" alt=""/>
</Link>
</HeaderLogo>
{isDesktop &&
<HeaderRight>
<HeaderJoinUs to="/join-us">join us</HeaderJoinUs>
<ButtonExtend as={Button} color={"#FFF"}><Link to={"/contact-us"}>Let's talk</Link></ButtonExtend>
<SocialsExtend color={"#000"} as={Socials}/>
<HeaderBurgerContainer onClick={() => setMenuState(!menuState)}>
<HeaderBurger>
<HeaderBurgerInner menuState={menuState}/>
</HeaderBurger>
</HeaderBurgerContainer>
</HeaderRight>
<Navbar menuState={menuState}/>
</HeaderWrapper>
导航栏:
const [open, setOpen] = useState(false);
<Nav>
{navLinks.map(i =>{
return (
<NavItem key={i.path} onClick={() => setOpen(props.menuState)}>
<StyledNavLink exact={i.exact} to={i.path} activeClassName={'CdTfP'}>
<span data-link={i.content.en}></span>
{i.content.en}
</StyledNavLink>
</NavItem>
)
})}
</Nav>
【问题讨论】:
-
只需将
setMenuState作为道具传递给Navbar并调用它。 -
@BrianThompson 你能给我一些例子吗?谢谢!
-
没什么大不了的,就像你做
menuState一样传递函数。无论您需要在哪里更新Header状态,只需调用该函数即可。它是 React 中非常基本的模式。阅读here about Lifting State Up。
标签: javascript reactjs typescript styled-components