2016-08-30 4 views
2

Ich habe ein sehr seltsames Verhalten mit React-Router. Es folgt der Code meiner Komponente in React:Nein href mit Link in React-Router

import React, { PropTypes } from 'react'; 
import {Router, Route, IndexRoute, Link} from 'react-router' 

export default class LinkWidget extends React.Component { 
render() 
    { 
    return (
     <li> 
      <Link className="page-scroll" to={"#" + this.props.path}>{this.props.name}</Link> 
     </li> 
    ); 
    } 
} 

Auf seiner Rendering, ich erhalte den folgenden HTML, das heißt, einen Anker-Tag ohne href Eigenschaft.

<ul class="nav navbar-nav navbar-left"> 
    <li class="hidden"> 
     <a href="#page-top"></a> 
    </li> 
    <li> 
     <a class="page-scroll">Services</a> 
    </li> 
    <li> 
     <a class="page-scroll">Portfolio</a> 
    </li> 
    <li> 
     <a class="page-scroll">About</a> 
    </li> 
    <li> 
     <a class="page-scroll">Team</a> 
    </li> 
    <li> 
     <a class="page-scroll">Contact</a> 
    </li> 
    </ul> 

Dies geschieht auch in anderen Komponenten. Ich weiß, dass ich etwas verpasse, aber ich habe keine Ahnung, was es ist. I/m ein Neuling versucht React und React Router. Jede Hilfe wird geschätzt. Dank ist Voraus :)

---- ---- aktualisieren

ist hier, welche Komponenten aussehen meine reagieren wie (unter Verwendung der Entwickler-Tools Reagieren):

LinkWidget

I mache hier etwas falsch, aber was ich nicht bekommen kann.

Update 2

Ich folge den Container-Komponenten-Muster und könnte es möglich sein, dass ich die Strecke Datei irgendwie falsch ich schreibe. Obwohl ich nicht verstehen kann, warum es ein Problem wäre, wenn ich statische Daten übergebe.

Kann mir jemand mit Routing mit dem Container-Komponenten-Muster führen.

+0

ist Ihr this.props.path prop richtig von der Mutter kommen? Können Sie einmal drucken und prüfen? Auch können Sie Ihre Elternkomponente einmal teilen, von der Stützen an LinkWidget –

+0

übergeben werden Die Requisiten werden @HarkiratSaluja richtig zurückgebracht. Ich habe es noch einmal überprüft. – Aakanksha

+0

@Aakanksha Wie wäre es, wenn Sie dieses 'to = {\' # $ {this.props.path} \ '}' verwenden? – Thanh

Antwort

2

Die Lösung ist einfach in Ihrer to attribute in Lin k hinzufügen Sie nicht eine "#". Die Linkattributkonvertierung ist so, dass automatisch eine #/ zum Anker href hinzugefügt wird.

Verwendung:

import React, { PropTypes } from 'react'; 
import {Router, Route, IndexRoute, Link} from 'react-router' 

export default class LinkWidget extends React.Component { 
render() 
    { 
    return (
     <li> 
      <Link className="page-scroll" to={this.props.path}>{this.props.name}</Link> 
     </li> 
    ); 
    } 
} 

Im Folgenden wird die Verknüpfung eines Beispiels Geige, wo ich diese Funktionalität getestet

JSFIDDLE

+0

Ich versuchte es auch, aber es macht immer noch Anker in der gleichen Weise ohne die href-Stütze. – Aakanksha

+0

@Aakanksha könnten Sie den Wert von this.props.path überprüfen –

+0

Ja, ich bekomme die "this.props.path". Ich habe die Frage aktualisiert, bitte sehen Sie sie sich an. Ich könnte etwas sehr kleines vermissen. – Aakanksha