javascript - 如何细化 Flow 中的综合事件?

标签 javascript reactjs generics ecmascript-6 flowtype

所以我有一个处理程序,它接受不同类型的 SyntheticEvent 并使用以下代码:

    defaultProps = {
            events: [
                'mousemove',
                'keydown',
                'wheel',
                'DOMMouseScroll',
                'mouseWheel',
                'mousedown',
                'touchstart',
                'touchmove',
                'MSPointerDown',
                'MSPointerMove',
            ],
            element:
              (typeof window === 'undefined' ? 'undefined' : typeof window) ===
            'object'
                ? document
                : {},
    }

    componentDidMount() {
            this.props.events.forEach((eventName: string) => {
                if (this.props.element) {
                    this.props.element.addEventListener(
                        eventName,
                        this.handleEvent(),
                    );
                }
            });
    }    
    handleEvent = (event: SyntheticEvent<*>): void => {
          if (event instanceof MouseEvent) {
            // This event is a MouseEvent.
          } else if (event instanceof KeyboardEvent) {
          } else {
          }
        }

但是,上面的代码会抛出一个错误,提示 MouseEvent(此类型与 SyntheticEvent 不兼容)KeyboardEvent 相同。起初我认为 SyntheticEvent 是所有事件的捕获所有类型。

最佳答案

所以我的主要问题是区分 SyntheticEventEvent 类。我最初认为所有 Event 都会在 React 中转换为 SyntheticEvent

添加事件监听器(例如 element.addEventListener)时,回调会发出 Event 对象,而不是 SyntheticEvent。我使用的是 addEventListener 而不是组件的 onClick 属性。

关于javascript - 如何细化 Flow 中的综合事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46139424/

相关文章:

javascript - React - 子级到父级的回调不起作用

javascript - Graphql shield 返回 Not Authorized for allowed mutation

node.js - 不变违规 : Could not find "store" in either the context or props of "Connect(KnowStatus)". 将根组件包装在 <Provider> 中

Scala 转换为泛型时遇到问题

java - 确保通用 lambda 表达式的类型安全

php - 为什么我的简单 ajax 代码不起作用?

javascript - 通过鼠标悬停突出显示具有重复名称的圆圈

reactjs - 如何在 JSX 中制作图像按钮?

javascript - 如何将对象插入另一个根数组内的数组中

java - 是否可以在泛型函数中测试类型?