2017-06-12 5 views
0

Ich habe eine Website, die URLs von ihnen Form /widgets/:id ermöglicht. Ich habe nicht mehr als 50 Widgets, also ist /widgets/51 keine gültige URL. Wie gehe ich beim Rendern einer Fehlerseite vor, wenn id größer als 50 ist?Wie validiere ich URL-Params mit React-Router?

Sollte ich den Wert von id in meiner Widget-Komponente überprüfen? Oder sollte ich es auf der Routenebene validieren? Außerdem würde ich es vorziehen, dass die Anzeige einer Fehlerseite die URL nicht ändert. Das heißt, wenn ein Benutzer zu /widgets/51 navigiert, möchte ich eine Fehlerseite anzeigen, aber ich möchte, dass die URL, die im Browser angezeigt wird, weiterhin /widgets/51 anzeigt.

Vielen Dank im Voraus!

Antwort

1

Wenn Sie bevorzugen, dass die URL nicht ändert, wenn Sie die Fehlermeldung dann behandeln, sollten Sie über die Logik verfügen, um die Parameter in der Komponente Widget zu testen. Sie sollten es wie folgt tun

render() { 
    if(this.props.match.params.id > 50) { 
     return <ErrorView/> 
    }else { 
     return <WidgetView/> 
    } 
} 
+0

Einzige Sache, die ich hinzufügen würde, ist, dass Sie solche Logik auf der Rendermethode vermeiden sollten. Das heißt, ich würde empfehlen, Sie verwenden "Zweig" HoC auf der neu zu erstellen lib: https://github.com/acdlite/recompose/blob/master/docs/API.md#branch –

+0

Danke für die Empfehlung @ LucasConstantinoSilva –