2016-11-18 6 views
0

Ok, ich habe meinen React-Router mehr oder weniger wie ich es will, aber mein Problem ist das: Ich muss jetzt ein wenig Funktionalität in meinem JS hinzufügen.React-Router Navigieren durch Routen mit jQuery

Beispiel: Der Benutzer gibt seine Details ein und klickt auf "Login". Ich möchte, dass meine jQuery überprüft, ob die Zugangsdaten korrekt sind und ob sie die Route zur Startseite ändern.

Ich habe keine Ahnung, wie ich das machen würde.

Das ist mein React-Router Code:

import React from 'react' 
import ReactDOM from 'react-dom'; 
import { Router, Route, hashHistory, Navigation } from 'react-router' 
import Login from './login' 
import Signup from './signup' 
import Home from './home' 


ReactDOM.render((
    <Router history={hashHistory}> 
    <Route path="/" component={Login}/> 
    <Route path="/signup" component={Signup}/> 
    <Route path="/home" component={Home}/> 
    </Router> 
), document.getElementById("app")) 

$("#loginBtn").click(
    function(){ 
     var email = $('loginEmail').val(); 
     var pass = $('loginpwd').val(); 

     /* Check to see if credential are correct. 
     * If so, change to '/home route 
     */ 
    } 
); 

Irgendwelche Ideen wäre sehr dankbar. Thanks :)

+0

warum nicht eine Komponente erstellen zu handhaben, was Sie beabsichtigen, mit jQuery – xiaofan2406

+0

@ xiaofan2406 in welchem ​​Sinne zu tun? Ich bin neu dazu ... –

+1

Probieren Sie einfach Router.browserHistory.push ('/ somepath'); in deinem Klick-Handler? Im Allgemeinen ist das Mischen von jQuery und React so ein Anti-Pattern, es ist besser, die jQuery-Funktionalität in eine Komponente zu integrieren –

Antwort

1

Eine Möglichkeit wäre die folgende:

const openAppRoute = (route) => { 
    // Summary: 
    //  Helper function for developers to navigation 
    //  to a different route programmatically. 
    hashHistory.push(route); 
}; 
window.openAppRoute = openAppRoute; 

$("#loginBtn").click(
    function(){ 
    var email = $('loginEmail').val(); 
    var pass = $('loginpwd').val(); 

    /* Check to see if credential are correct. 
    * If so, change to '/home route 
    */ 
    window.openAppRoute("/home"); 
    } 
); 
+0

Vielen Dank. Genau das habe ich gebraucht. :) –