2016-08-02 20 views
0

Wenn ich eine Komponente, zum Beispiel <Foo />, die so etwas wie dies macht:Reagieren: Ist es in Ordnung, eine Komponente durch die Requisiten an eine andere Komponente zu übergeben?

<div> 
    <Bar /> 
    {/* ... */} 
</div> 

Wäre es möglich, Bar als eine Eigenschaft von Foo passieren? <Foo Bar={Bar}/>. So kann ich Referenz Bar während des Rendern von Foo:

render() { 
    const Bar = this.props.Bar; 
    return (
    <div> 
     <Bar /> 
     {/* ... */} 
    </div> 
); 
} 

Ich weiß nicht, ob dies eine gute Idee, um ehrlich zu sein wäre, nur zu überprüfen, ob jemand weiß besser als ich.

Der Grund, warum ich so etwas tun möchte, ist, weil ich eine Komponente testen möchte und darüber nachdenke, wie man gefälschte Abhängigkeiten in die Komponente injiziert. Für ein Projekt habe ich über die Verwendung von Preact nachgedacht, was nicht mit seichtem Rendern funktioniert, daher dachte ich darüber nach, vielleicht eine Art Abhängigkeitsinjektion durchzuführen.

Das Durchlaufen der Komponenten, die die Komponente verwendet, würde es mir erlauben, sie während des Testens zu fälschen, indem sie Mocks passieren.

Ist das eine gute Idee? Oder nicht wirklich der Weg zu gehen? ...

+0

Ein HOC wäre eine bessere Alternative, um ein ähnliches Verhalten zu replizieren. Dieser Artikel beschreibt diese Vorgehensweise sehr gut. https://medium.com/@franleplant/react-higher-order-components-in-depth-cf9032ee6c3e#.r4mbzunhu – Deadfish

Antwort

1

Ich weiß nicht, warum es eine schlechte Idee sein könnte.

Wenn Sie bauen eine Komponente Reaktion, Gebäude sind Sie ein Javascript Objekt mit einer gewissen Syntax (JSX), die auf Ebene Javascript übersetzt wird. So eine React Komponente zu übergeben ist wie die Javascript Objekt.

Für Informationen, das ist die Art react-router verwenden, um Komponente in Route zu übergeben.

+0

Stimmt, das habe ich bemerkt. Und das Kindereigentum besteht aus einer Reihe von Komponenten. Aber ich habe nicht den vorherigen Ansatz verwendet, so dass ich ein wenig widerwillig darüber bin –

+0

hey, danke für die Antwort –

+1

Die einzige schlechte Sache, die ich hier denken kann ist, dass es es weniger lesbar macht. Hier müssen Sie die übergeordnete Komponente überprüfen, um zu wissen, welche Art von Element hier tatsächlich erstellt wird. Dies wird ein viel größeres Problem sein, wenn viele Komponenten ihre Markup wie folgt erstellen. (Skalierbarkeit/Lesbarkeit) – magnudae

Verwandte Themen