2016-04-23 5 views
1

Ich versuche zu lernen Meteor reagieren, und ich habe eine Frage zu FlowRouter mit Inhalt in HTML-Template-Seiten einzufügen.FlowRouter - Einfügen von Inhalten HTML-Vorlage

routes.jsx

FlowRouter.route('/post/:postId', { 
    name: 'posts.single', 
    action({postId}) { 
    mount(MainLayoutCtx, { 
     content:() => (<Post postId={postId}/>) 
    }); 
    } 
}); 

index.jsx - wo MainLayoutCtx zu

const Layout = ({content =() => null }) => (
    //code here 
); 
zeigt:

das alles wird importiert richtig, das ist der entsprechende Code Nehmen wir an,

In index.jsx, {content =() => null}. Bedeutet dies nicht, dass Inhalt ein Objektliteral ist, das keine Parameter hat und null ausgibt?

Aber wenn Inhalte in routes.jsx übergeben wird, ist es () => (/ Post postID = {postID} />) So ist nicht, dass die Inhalte ausgibt Beitrag mit postID als Stütze übergeben?

Wie wirkt sich das Spiel mit dem, was index.jsx erwartet?

+0

Es gibt keine einfache Möglichkeit, Daten aus dem Weg zu Vorlage im Flow-Router, einen Blick auf [Flow-Router-extra] passieren (https://github.com/VeliovGroup/flow-router) wird diese verlängert Gabel von FR, mit Haken, um Daten vom Fräser zu Schablonen zu übertragen –

Antwort

1

In Ihrem Beispiel content ist ein Funktionsliteral ohne Eingabeparameter in beiden Fällen, und es gibt eine neue Komponente reagieren. (null ist eine gültige Komponente Reagieren, zu.)

content:() => (<Post postId={postId}/>) 

In diesem Fall postId ist kein Parameter, sondern ein Verschluss variabel. Das Closure-Objekt wird zur Laufzeit erstellt und enthält den Wert postId, wenn dieser Code erreicht ist.

In index.jsx erwartet Ihr Layout eine Funktion ohne Parameter, die eine React-Komponente zurückgibt, und genau das ist content. Und wenn Sie content() nennen, erstellt es eine neue Post Komponente und leitet die postId von seiner Schließung Objekt als Requisiten.

Verwandte Themen