在React JS上绑定touchstart的正确方法是什么?

时间:2014-02-27 04:38:38

标签: javascript touch-event reactjs

我正在学习React JS,截至目前我在源代码,测试或官方文档上找不到任何示例。在文档中,touchStart事件被称为支持,但handleTouchStart不起作用。

我找到的唯一一个实际可行的例子是react-touch项目。

以下代码有效,但这是绑定的唯一方法吗?对我来说,它看起来像是一种廉价的解决方法。

var MyHeader = React.createClass({
  handleTouchStart: function() {
    console.log('handleTouchStart');
  },
  render: function() {
    return this.transferPropsTo(
        <header onTouchStart={this.handleTouchStart}>{title}</header>
    );
  }
};

实际上这样做的正确方法是什么?

3 个答案:

答案 0 :(得分:20)

自React v0.14起,您不必再手动调用React.initializeTouchEvents(true);

http://facebook.github.io/react/blog/2015/10/07/react-v0.14.html#breaking-changes

答案 1 :(得分:7)

在玩触摸事件时,我将React.initializeTouchEvents(true)添加到componentWillMount组件生命周期方法,它似乎正常工作。

var MyHeader = React.createClass({
  componentWillMount: function(){
    React.initializeTouchEvents(true);
  },
  handleTouchStart: function() {
    console.log('handleTouchStart');
  },
  render: function() {
    return this.transferPropsTo(
        <header onTouchStart={this.handleTouchStart}>{title}</header>
    );
  }
};

答案 2 :(得分:2)

Hy,Iraê!

您必须在任何渲染之前调用React.initializeTouchEvents(true)。请在此处查看反应文档:http://facebook.github.io/react/docs/events.html#touch-events