React中styled components绑定的onClick事件不触发如何解决
问题根源
事件无法触发的核心原因是JSX事件名写法错误:
React 采用驼峰式命名的合成事件机制,你代码里写的全小写onclick是原生HTML的事件写法,JSX 不会识别并绑定这个事件,不管是直接绑在 styled 组件上,还是套一层 div 绑定,只要写成小写onclick都不会生效。
你写的 styled-components 样式代码本身没有语法问题,NavbarhamButton 作为 styled 生成的组件,会自动透传合法的DOM属性和React事件,不需要额外包裹其他元素来绑定事件。
修正方案
只需要把事件名从小写onclick改成驼峰格式的onClick即可,修正后的组件代码如下:
import React from "react"; import { useState } from "react"; import StyledNav, {NavbarhamButton} from "./style/Navbar.styled"; const Navbar = () => { const [NavOpen, setNavOpen] = useState(false); return ( <StyledNav> <NavbarhamButton className="fas fa-bars" onClick={() => setNavOpen(!NavOpen)} /> </StyledNav> ); }; export default Navbar;
额外排查点
如果改完事件名还是存在点击无响应的情况,可以检查层叠关系:
- 确认没有其他设置了更高
z-index的元素遮挡在按钮上方 - 按钮本身已经设置了
z-index:2,只要父元素没有创建隔离的层叠上下文,这个层级优先级足够正常触发点击
内容的提问来源于stack exchange,提问作者Anongo Steve
相关产品推荐
相关产品推荐

