【发布时间】:2022-01-11 18:35:54
【问题描述】:
我迈出了反应的第一步。 我正在开发一个 gatsbyjs 网站,但我被困在我的导航组件上。
听完之后,我开始创建一个名为 Burger 的类组件来显示/隐藏导航……设置道具、状态和绑定……现在没有问题。
我在另一个文件中放置了我的导航功能组件,使用 gatsbyjs“链接”组件来管理链接。
我想要做的是在我点击链接时更改“汉堡”组件的状态。
所以我尝试使用 onClick 事件:
onClick={() => props.handleClick()}
它不起作用,错误是:props.handleClick 不是函数。
我做错了什么?
谢谢
// Burger.js
class Burger extends React.Component {
constructor(props) {
super(props);
this.state = { isOpen: false };
this.handleClick = this.handleClick.bind(this);
}
handleClick = () => {
this.setState({
isOpen: !this.state.isOpen,
});
this.state.isOpen
? document.body.classList.remove("nav-open")
: document.body.classList.add("nav-open");
};
render() {
const burgerState = this.state.isOpen ? open : "";
return (
<button className={`${burger} ${burgerState}`} onClick={this.handleClick}>
<span className={burger__label}>Menu</span>
<span className={burger__line}></span>
<span className={burger__line}></span>
<span className={burger__line}></span>
</button>
);
}
}
// Nav.js
const Nav = (props) => {
return (
<div className={nav__overlay}>
<div className={nav__wrap}>
<nav className={nav__primary}>
<ul>
<li>
<Link to='/' activeClassName={active} title='Home' onClick={() => props.handleClick()}>
Home
</Link>
</li>
<li>
<Link to='/about' activeClassName={active} title='About' onClick={() => props.handleClick()}>
About
</Link>
</li>
<li>
<Link to='/contact' activeClassName={active} title='Contact' onClick={() => props.handleClick()}>
Contact
</Link>
</li>
<li>
<Link to='/blog' activeClassName={active} title='Blog' onClick={() => props.handleClick()}>
Blog
</Link>
</li>
</ul>
</nav>
<div className='contact'>
<ul>
<li>aaa</li>
<li>aaa</li>
<li>aaa</li>
<li>aaa</li>
</ul>
</div>
</div>
</div>
);
};
【问题讨论】:
-
你了解什么是道具吗?您可能想查找一些说明如何使用它们的教程。
标签: javascript reactjs