热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么在React中传递给onClick的箭头函数内部的函数调用不起作用?

我有一个用户界面组件AppBar(使用钩子),我必须切换抽屉(基于类的组件),并且我使用props.t

我有一个用户界面组件AppBar(使用钩子),我必须切换抽屉(基于类的组件),并且我使用props.toggleDrawer引用了AppBar.js中的功能toggleDrawer。


当用户单击AppBar中的IconButton组件时,我想调用该函数,因此我尝试使用带有对toggleDrawer()的调用的箭头功能将onClick属性赋予该组件,但它无法正常工作直接从onClick属性调用该函数即可正常工作。为什么会这样,据我所知,我们应该传递arrow函数,以避免在将JSX解析为原始js期间调用该函数。

OnClick= { props.toggleDrawer('left',true) }
edge="start"
classname={classes.menuButton}
color="inherit"
aria-label="open drawer"
>


上面的代码有效,但下面的无效。 :(

OnClick= { () => { props.toggleDrawer('left',true)} }
edge="start"
classname={classes.menuButton}
color="inherit"
aria-label="open drawer"
>


*注意:我对钩子一无所知,但是具有IconButton组件的AppBar组件正在使用钩子会导致此问题。


如果您引用的是此示例drawer。那么toggleDrawer是一个咖喱函数(一个被调用的函数会返回另一个函数)。 toggleDrawer已经返回了将在onClick上调用的函数。但是,当您将其放在箭头函数中时,就不会发生函数调用。当使用toggleDrawerside调用open时,它将返回另一个函数,该函数采用event并返回void。检查下面。

const toggleDrawer = (side: DrawerSide,open: boolean) => (
event: React.KeyboardEvent | React.MouseEvent,) => {
if (
event.type === 'keydown' &&
((event as React.KeyboardEvent).key === 'Tab' ||
(event as React.KeyboardEvent).key === 'Shift')
) {
return;
}
setState({ ...state,[side]: open });
};

推荐阅读
  • 深入探讨:React中的方法绑定技巧与性能考量
    本文详细介绍了在React应用中绑定方法的三种常见方式及其对性能的影响,包括在JSX中使用箭头函数、在构造函数中绑定this以及将类方法定义为箭头函数的方法。 ... [详细]
  • 本文详细介绍了如何利用 Bootstrap Table 实现数据展示与操作,包括数据加载、表格配置及前后端交互等关键步骤。 ... [详细]
  • 在处理大规模数据数组时,优化分页组件对于提高页面加载速度和用户体验至关重要。本文探讨了如何通过高效的分页策略,减少数据渲染的负担,提升应用性能。具体方法包括懒加载、虚拟滚动和数据预取等技术,这些技术能够显著降低内存占用和提升响应速度。通过实际案例分析,展示了这些优化措施的有效性和可行性。 ... [详细]
  • Vue应用预渲染技术详解与实践 ... [详细]
  • 本文探讨了如何利用RxJS库在AngularJS应用中实现对用户单击和拖动操作的精确区分,特别是在调整区域大小的场景下。 ... [详细]
  • 本文详细介绍了 `org.apache.tinkerpop.gremlin.structure.VertexProperty` 类中的 `key()` 方法,并提供了多个实际应用的代码示例。通过这些示例,读者可以更好地理解该方法在图数据库操作中的具体用途。 ... [详细]
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
  • 本文介绍了一个使用Slideview组件实现循环轮播效果的例子,并将其作为ListView顶部的一项。此ListView包含了两种不同的模板设计,一种以Slideview为核心,另一种则是标准的单元格模板,包含按钮和标签。 ... [详细]
  • 本文探讨了在UIScrollView上嵌入Webview时遇到的一个常见问题:点击图片放大并返回后,Webview无法立即滑动。我们将分析问题原因,并提供有效的解决方案。 ... [详细]
  • 本文介绍了如何在Android应用中通过Intent调用其他应用的Activity,并提供了详细的代码示例和注意事项。 ... [详细]
  • SDWebImage第三方库学习
    1、基本使用方法异步下载并缓存-(void)sd_setImageWithURL:(nullableNSURL*)urlNS_REFINED_FOR_SWIFT;使用占位图片& ... [详细]
  • 使用 Mui.js 获取复选框值的方法
    本文介绍如何使用 Mui.js 框架来获取复选框的值,并通过数组进行处理和展示。 ... [详细]
  • 在React中使用setState时遇到错误,本文将详细分析错误原因并提供解决方案。 ... [详细]
  • PBO(PixelBufferObject),将像素数据存储在显存中。优点:1、快速的像素数据传递,它采用了一种叫DMA(DirectM ... [详细]
  • Vue 中实现动态增删表单区域
    本文介绍如何在 Vue 项目中通过按钮实现表单区域的动态添加和删除功能。 ... [详细]
author-avatar
红酒醉红颜2702937481
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有