首页 > 其他分享 >react e.stopPropagation() 前调用 await 耗时操作 的坑

react e.stopPropagation() 前调用 await 耗时操作 的坑

时间:2022-10-08 21:23:32浏览次数:81  
标签:React 调用 await react 耗时 stopPropagation

代码如下

<div
  onClick={e=>{
    e.stopPropagation();

  }}
/>


这样是能阻止冒泡的 ,e.stopPropagation(); 能正常 执行

但是下面 这样写 是不行的

<div
  onClick={async (e)=>{

  let res = await xxx(); //处理耗时操作
  if (res.success){
    e.stopPropagation(); // 这个永远都不会走 ,并且不会组织事件冒泡 
  }
  }}
/>

原因

preventDefault 需要同步调用才能产生任何效果。即使没有 React 也是如此。这是浏览器/DOM 级别的行为。

事件系统是同步的,preventDefault必须同步调用,即使在 React 之外。

参考来源 https://github.com/facebook/react/issues/9319

标签:React,调用,await,react,耗时,stopPropagation
From: https://www.cnblogs.com/ifnk/p/16770244.html

相关文章

  • React瀑布流
    前端页面样式修改的时候,要用到瀑布流样式,本来是想用flex直接换行显示,试了发现并不是想要的效果;真正的瀑布流是每项的宽度固定,高度不固定,自动填充到高度最小的列下面,还具有......
  • ReactNative遇到info Installing required CocoaPods dependencies卡死的问题
    最近换了mac,第一次使用rn做ios的项目发现一个问题,在使用react-nativerun-ios的时候,会遇到infoInstallingrequiredCocoaPodsdependencies卡着一直不动,盲猜是install......
  • react setState设置深层级对象的属性
      要修改里面的内容 ......
  • 消灭异步回调,还得是async-await
    本篇,带你读懂async~await间的浪漫。关于异步处理问题,ES5的回调让我们陷入回调地狱轮回,后来ES6的Promise(Promise不了解?点这了解)让我们脱离轮回,终于,ES7的async-await带我们......
  • React的零渲染问题及源码分析
    开门见山,先来看一张bug图(状态下面有个00)。预期是:状态为0时,2个组件不做渲染。现状:状态为0时,2个组件不做渲染,但是渲染出了00。零渲染bug代码如何修复零渲染问题初窥源码源......
  • #yyds干货盘点#Vue3的reactive
    最近一阶段在学习Vue3,Vue3中用 ​​reactive​​、​​ref​​ 等方法将数据转化为响应式数据,在获取时使用 ​​track​​ 往 ​​effect​​ 中收集依赖,在值改变时,使......
  • 一个 create-react-app v5 的问题
    前言前两天我准备用​​create-react-app​​创建一个新项目,然后我在命令行下执行npxcreate-react-appmy-app命令行下就会提示Needtoinstallthefollowingpackages:......
  • React 新的文档用到了哪些技术?
    前言beta.reactjs.orgReact的新的文档已经完成了70%并且呼吁社区进行翻译工作。新的文档采用了全新的架构​​next.js​​​+​​TailwindCSS​​,改版后的文档......
  • [TDD] 如何测试 React 异步组件?
    前言本文承接上文如何测试驱动开发React组件?​,这次我将继续使用@testing-library/react来测试我们的React应用,并简要简要说明如何测试异步组件。异步组件的测试内容......
  • react路由
    -react路由其实是借助BOM中的History对象实现的,专门有一个history.js的库,可以让操作history对象简单起来。用history.js可以通过两种方式创建路由对象:1、History.create......