react-lite icon indicating copy to clipboard operation
react-lite copied to clipboard

Not triggering click event the first time when used with material-ui

Open zsxsoft opened this issue 8 years ago • 2 comments

The bug can reproduce with Chrome and Edge, works fine in Firefox. Also, anujs(https://github.com/RubyLouvre/anu, another React-like library) and React works fine.

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3192.0 Safari/537.36

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16251

Example: https://lucifier129.github.io/material-ui/build/#/

In Chrome, I have to double-click a MenuItem to trigger its onClick event with react-lite. image

I found the source of bug: https://github.com/callemall/material-ui/blob/master/src/internal/TouchRipple.js#L210. I replaced the rippleGroup to <div />, the issue still exists.


      rippleGroup = (
-       <ReactTransitionGroup style={prepareStyles(mergedStyles)}>
-         {ripples}
-       </ReactTransitionGroup>
+       <div />
      );
    }

Then I tried to debug react-lite. The first click didn't trigger click event.

image qq 20170830112738

So I wrapped dispatchEvent with setTimeout to wait 65ms, now the click triggered normally. Delaying batchUpdate is useless. image

I think it's maybe any function canceled mouseup event, but there're no function controlled event. qq 20170830112958

Now I have no clue...

zsxsoft avatar Aug 30 '17 03:08 zsxsoft

So fucking exciting. node_modules/material-ui/internal/TouchRipple.js, L260,

if (hasRipples)

to

if (true)

It will works correctly!!! But damn it, hasRipples is always true when I click on it, wtf happened???????

zsxsoft avatar Aug 30 '17 05:08 zsxsoft

Intersting, haha~

Lucifier129 avatar Aug 30 '17 07:08 Lucifier129