React-Router: Daten über Routen weiterleiten

8

Ich versuche herauszufinden, wie ich Daten am besten über meine Routen weiterleiten kann. Ich weiß, dass ich Params verwenden kann, aber es gibt bestimmte Arten von Daten, die nicht in Params gehören.

Zum Beispiel: Ich habe eine Indexseite, die eine Liste von Anwendungen anzeigt. Jede Anwendung hat eine Schaltfläche daneben, die Sie zur Ansicht für diese Anwendung leitet.

Ich möchte die Anwendung selbst an den Anwendungshandler übergeben. Es ist jedoch nicht sinnvoll, die gesamte Anwendung über params zu übergeben. Obwohl es sinnvoll ist, die Anwendungskennung an params (d. H.: Id oder: name) zu übergeben,

Also denke ich, ich sollte das tun, indem ich die Anwendungs-ID an params übergebe und dann in der Anwendungskomponente meinen ApplicationStore nach der entsprechenden Anwendung mit der ID durchsuche.

Wäre es nicht einfacher und schneller, die Anwendung selbst zu übergeben? Gibt es einen Weg, dies zu tun? Gibt es einen Grund, dies nicht zu tun?

Hier ist ein Code:

<Link to="showApplication" params={{name: application.name}}>View</Link>

oder

<Link to="showApplication" params={{application: application}}>View</Link>

Vielen Dank im Voraus!

    
BezR 22.01.2015, 01:54
quelle

2 Antworten

5

Das Problem ist, dass wenn die Person die URL aktualisiert oder auf andere Weise direkt lädt, sie die richtige Ansicht anzeigen muss. Da URLs nur Zeichenfolgen sind, müssen Sie die Route als Zeichenfolge darstellen. Sie können nicht (einfach) eine tatsächliche Anwendung in die URL schieben.

Der Job eines Routers besteht darin, diese Zeichenfolge (die URL) zu übernehmen und sie dem tatsächlichen Code (dem Handler) zuzuordnen und zusätzliche Daten (Params, Query und / oder Hash) bereitzustellen.

Ihre Aufgabe als Router-Benutzer besteht darin, sicherzustellen, dass die URL genügend Informationen enthält, damit der Router den richtigen Handler auswählen kann und der Handler genügend Informationen zur Ausführung seiner Aufgabe hat (z. B. welche Anwendung angezeigt werden soll).

>

Wenn die URL etwas wie mysite.com/showApplication ist, gibt es eindeutig nicht genug Informationen.

Wenn es etwa so aussieht:

%Vor%

d. eine Anwendung in die URL setzen, das ist zu viel Information und generell eine sehr schlechte Idee.

Aber mysite.com/showApplication/applicationName stimmt genau: -)

    
FakeRainBrigand 22.01.2015, 07:33
quelle
-1

Ich werde einen einfachen und hacky Weg bieten, haben Sie ein globales Objekt, das Sie verwenden, um Informationen über Routen zB.

zu teilen %Vor%

Beachten Sie, dass es sehr wichtig ist, nur diesen Weg zu verwenden, wenn das Objekt, das Sie teilen wollen, von der Route selbst neu erstellt werden kann, da FakeRain über die Route nur so viele Informationen enthalten muss, dass der Benutzer die gleiche Erfahrung macht sie laden neu.

Der einzige Grund, den Sie verwenden würden, ist Bandbreite zu sparen, wenn Sie Informationen für das, was Sie freigeben möchten, anfordern müssen, aber Sie wollen keinen großen Link.

    
Onza 23.02.2016 20:22
quelle