首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ReactJS合成事件为命中状态?

ReactJS合成事件为命中状态?
EN

Stack Overflow用户
提问于 2018-08-12 13:06:49
回答 1查看 129关注 0票数 1

我最近做了这样的事

代码语言:javascript
运行
复制
onHit(functionCall)
{
    let attr = {};
    attr["onKeyPress"] = functionCall;
    attr["onClick"] = functionCall;
    attr["onTouchEnd"] = functionCall;
    return attr;
}

这样我就可以在我的JSX中做到这一点

代码语言:javascript
运行
复制
<a {...this.onHit((e)=>this.doSomething())} title="This has no href" tabIndex="0">This has no href</a>

一切都如预期的那样工作,按键、单击和触地都会触发相同的事件。

我创建了这个onHit函数,因为我正在构建一个web应用程序,其中所有的动作控件都需要通过键盘、鼠标和触摸屏进行访问。

在继续使用我的自定义onHit函数之前,在ReactJS中是否有一种更惯用的方法来做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-12 13:29:17

我认为您的解决方案很好,但您也可以创建一个自定义组件,它将组件/元素类型作为支柱,onHit函数用作支柱,并将其用作所有事件的事件处理程序,并传播其余的支持。

示例

代码语言:javascript
运行
复制
function MyComponent({ element: Element, onHit, ...rest }) {
  return (
    <Element onKeyPress={onHit} onClick={onHit} onTouchEnd={onHit} {...rest} />
  );
}

class App extends React.Component {
  render() {
    return (
      <MyComponent
        element={"a"}
        onHit={() => console.log("hit!")}
        title="This has no href"
        tabIndex="0"
      >
        This has no href
      </MyComponent>
    );
  }
}

ReactDOM.render(<App />, document.getElementById("root"));
代码语言:javascript
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51809116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档