javascript - onClick 不会触发事件 React.js
问题描述
我正在尝试通过单击按钮来切换元素,但它没有做任何事情。另请注意,代码已简化,因为我不想复制整个应用程序,我只包含了我认为重要的部分。这是代码:
Navbar.js ..在这里我尝试调用它来自 context.js 文件的函数,我在该文件中设置了 contextAPI
import { useGlobalContext } from "./context"; const { openSidebar, openSubmenu, closeSubmenu } = useGlobalContext(); <button className="btn toggle-btn" onClick={openSidebar}>
上下文.js
const AppContext = React.createContext(); const AppProvider = ({ children }) => { const [isSidebarOpen, setIsSidebarOpen] = useState(false); const openSidebar = () => { console.log("test") setIsSidebarOpen(true); }; return ( <AppContext.Provider value={(isSidebarOpen, openSidebar, closeSidebar)}> {children} </AppContext.Provider> ); } export const useGlobalContext = () => { return useContext(AppContext); }; export { AppContext, AppProvider };
应用程序.js
document.addEventListener("click", (e) => { console.log(e); console.log(e.target); });
index.js
import App from "./App"; import { AppProvider } from "./context"; ReactDOM.render( <React.StrictMode> <AppProvider> <App /> </AppProvider> </React.StrictMode>, document.getElementById("root") );
App.js 的事件侦听器正确显示事件以及作为按钮的 event.target。但是,我没有从 context.js 获得任何日志到控制台,它应该记录“测试”,而不是错误,不是警告,什么都没有......onClick
被完全忽略。
解决方案
你会在这里找到你的答案
onClick={( )=>{openSidebar( )}}
推荐阅读
- identityserver4 - IdentityServer4 .Net 标准还是 .Net 核心?
- angular - 如何在“选择”组件中显示不同的名称?
- google-apps-script - 如何修复返回的错误代码 500 以登录需要 CSRF 令牌的网站
- c++ - Makefile 在 Linux 下工作但在 Windows 下不工作,在子目录中找不到文件
- azure-logic-apps - 使用 HTTP 操作 POST 文件 - 编码问题
- reactjs - Storybook + React Native + Typescript webpack/loader 问题
- python - 使用 pandas.loc 依次使用多个布尔过滤器选择行
- python - 如何按列对 nx3 numpy 数组进行排序,但它会记住该行中的数据?
- android - 将动态查询与 LiveData 结合起来为 RecyclerView 适配器提供服务
- python - 根据索引位置python从子列表制作子列表