2016-03-02 2 views
6

J'ai récemment effectué une mise à niveau de React 0,10 à React 0,14. Au début, je recevais une erreur que React.initializeTouchEvents n'était pas une fonction. J'ai lu une documentation qui prétendait que la nécessité de cette initialisation avait disparu dans la version la plus récente de React, alors je l'ai fait disparaître. Maintenant, cependant, aucun événement tactile n'est enregistré dans mon projet. Que dois-je faire pour les remettre au travail? Ci-dessous j'ai inclus un code de test simple que j'ai écrit pour essayer des solutions à ce problème. Actuellement, aucun événement tactile n'est en cours d'enregistrement.Événements tactiles rompus avec la mise à niveau ReactJS dans l'émulateur mobile Chrome

Mon principal fichier js:

/** @jsx React.DOM */ 

var React = require('react'); 
var ReactDOM = require('react-dom'); 
var TestButton = require('components/common/testButton'); 

try { 
    var lander = (<TestButton/>); 
    ReactDOM.render(lander, document.getElementById('myContainer')); 
} 
catch (e) { 
    error.errorHandler(e); 
} 

Mon composant TestButton:

/** @jsx React.DOM */ 

var React = require('react'); 

var TestButton = React.createClass ({ 
    getInitialState: function() { 
    return { 
     text: "Click Here!", 
    }; 
    }, 
    toggle: function() { 
    console.log('in toggle'); 
    if (this.state.text == "Click Here!"){ 
     this.setState({ 
     text: "Good Job!", 
     }); 
    } else { 
     this.setState({ 
     text: "Click Here!", 
     }); 
    } 
    }, 
    render: function() { 
    return (
     <div onTouchEnd={this.toggle}> 
      {this.state.text} 
     </div> 
    ); 
    }, 
}); 
module.exports = TestButton; 

Toute autre idée serait grandement apprécié

EDIT: J'ai essayé de changer de onTouchEnd depuis onTouchTap est plus disponible . Cependant, j'ai toujours le même problème.

EDIT: cela fonctionne très bien à partir d'un appareil mobile lui-même. Cependant, je n'arrive pas à le faire fonctionner à partir de l'émulateur mobile Chrome

Répondre

0

TouchTap n'est plus disponible en tant qu'événement. Veuillez read the docs on TouchEvents pour sélectionner l'événement approprié. Vous pouvez lier:

onTouchCancel onTouchEnd onTouchMove onTouchStart 
+0

J'ai changé 'onTouchTap' dans le code ci-dessus pour' onTouchEnd', et toujours rien ne se passe – kat

2

Comme l'a dit Mathletics, onTouchTap n'est pas disponible comme un événement. Cependant, vous pouvez essayer ce plugin pour rendre les choses plus faciles https://github.com/zilverline/react-tap-event-plugin

+0

Merci, je vais examiner cela. Des réflexions sur pourquoi onTouchEnd ne fonctionne pas pour moi non plus? – kat

0

Si vous voulez juste capturer un événement de tap, utilisez onClick. Les événements onTouchStart, onTouchEnd ect. sont glisser et déposer des événements. Pour les balayages, vous aurez besoin d'une bibliothèque tierce comme reac-hammerjs.