react-component / react-component/slider

About stopping event propagation of Slider under React v.17

Open
#779 0 comments 4 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
3.1k
Forks
768
Avg merge
11d 22h
Merged PRs (30d)
5

Description

When calling stopPropagation of touch move event on parent will casing problems on Slider

Problem:
Unable to change the value of Slider by touch move.

Code:

<div onTouchMove={(e) => e.stopPropagation()}>
    <Slider defaultValue={10} min={0} max={40}/>
</div>

As I know, Slider will add touch move and touch end event listener to document when touch start, this work totally fine before React 17.

However since React 17, React attach event listeners to root element instead of document, and calling stopPropagation on React's synthetic event will exactly stop event bubble from root element to document, therefore Slider will not work as expected.

I wonder if there are any way to solve this problem? Thank you

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the Slider touch interaction entry points, especially the touch move and touch end listeners added after touch start, and reproduce the provided React 17 example with a parent onTouchMove handler calling stopPropagation. Investigate how React 17 root-level event delegation affects document listeners; done means the Slider value changes by touch move in that example without breaking existing touch behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
react, typescript
Domain
frontend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.