2017-07-07 5 views
0

Ich bin in einer Situation, in der ich eine google analytische Ereignis on onClicking einen Link auslösen muss. Ich schrieb einen Handler für den Zweck:Entregistrierung e.preventDefault in reactJS-Methode

handleClick(e){ 
    e.preventDefault(); 
    // -------------------------- 
    GA code ... 
    // -------------------------- 
    // now how can I re-eanble the link 
    // e.target.click() and similar methods are not working for me 

} 

Aber nach GA-Ereignisse ausgelöst wird, könnte ich nicht einen Weg zu entbinden der prevent von der Verbindung (erstellt mit Reagieren des „link“ Komponente) finden.

Alle Hinweise sind hilfreich.

Antwort

1

Sie können versuchen, indem Sie den Status aktualisieren. Das folgende Beispiel Ich habe versucht, den Ereignishandler bedingt anzuhängen. Ich habe den Handler entfernt, der an onClick Ereignis der Taste nach dem ersten Anruf angeschlossen wird.

Ich habe auch ausprobiert, e.preventDefault für die Verbindung bedingt auszuführen.

https://codesandbox.io/s/MQnoVJKJR

import React from 'react'; 

export default class Hello extends React.Component { 
    state = { 
    btnClicked: false, 
    linkClicked: false, 
    }; 
    constructor() { 
    super(); 
    } 
    handleClick(e) { 
    e.preventDefault(); 
    alert('button clicked'); 
    this.setState({ 
     btnClicked: true, 
    }); 
    } 
    handleLinkClick(e) { 
    if (!this.state.linkClicked) { 
     e.preventDefault(); 
    } 
    this.setState({ 
     linkClicked: true, 
    }); 
    } 
    render() { 
    return (
     <div> 
     <div> 
      <button 
      onClick={!this.state.btnClicked && this.handleClick.bind(this)}> // Binding onClick event to state change 

      Click Me 
      </button> 
     </div> 
     <a 
      href="https://www.google.co.in" 
      target="_blank" 
      onClick={this.handleLinkClick.bind(this)} 
     > 
      Go to Google.com 
     </a> 
     </div> 
    ); 
    } 
} 
+0

Dank krishna, aber es scheint, dass es ein Problem. Mit Beispiel, wenn Sie das erste Mal auf den Link klicken, wird nichts passieren, da linkClicked falsch ist. – kallada

+0

Ja, weil ich außer der Aktualisierung des Status keinen anderen Code habe. Sie würden GA-Code haben, der ausgeführt wird, und beim nächsten Klick könnten Sie zu dem Link navigieren, auf den Sie geklickt haben. Sie können entsprechend Ihrer Anforderung ändern. –

+0

Ok, hab es. Aber wenn wir den e.preventDefault - wie etwas, das wir mit jQuery gemacht haben - hätten lösen können, wäre das für meinen Fall ideal. – kallada

Verwandte Themen