2017-08-31 8 views
0

Hier ist das ZielReact Destrukturierung umbenennen

Von einem app/Modul, das mit create-react-app nicht

erstellt hat
class Hoc extends React.Component { 
    render() { 
    const {component: Component} = this.props 
    return (
     <div> 
     <Component /> 
     </div> 
    ) 
    } 
} 

Beschreibung:

Verwenden Grund ES6 Destrukturierung mit Umbenennungs so dass Das react-Element kann anstelle einer Variablen <Component /> als {component} referenziert werden.

Ich habe dies erfolgreich in einer App aus create-react-app erstellt. Diese Syntax ist im Buch fullstack react dokumentiert. Dieses Problem tritt in zwei Modulen für reaktive Module auf, an denen ich arbeite und die nicht aus create-react-app erstellt wurden.

Der wahrscheinlichste Täter ist ein fehlendes Babel-Plugin. Die Anwendung, in der das Programm läuft, wurde ausgeworfen, so dass ich alle Abhängigkeiten und Plugins sehen kann, aber ich konnte keins identifizieren, das dafür funktioniert.

Hmmm, möglicherweise wird es von einem der Reaktionskripte gehandhabt, die nur mit create-react-app kommen.

.babelrc

{ 
    "presets": ["es2015", "stage-2", "react"], 
    "plugins": [ 
    "add-module-exports" 
    ] 
} 

Edit:

Dies ist ein ein Beispiel für die nackten Mindestanforderungen um das Problem zu zeigen gelöst werden. Seitenschrittlösungen wie this.props.children und {React.cloneElement(this.props.component, {...this.props})} sind keine Lösungen für das spezifische Problem. Prost!

+2

Ich denke, es ist eher ein Anti-Muster, um eine Komponente als Requisite zu übergeben. Wenn sich diese Komponente ändert, könnten Sie einfach eine Flag-Stütze für die Komponente haben, die sie sein sollte, und dann reguläre Importe für jede mögliche Komponente verwenden und Logik verwenden, um die richtige zu rendern. Oder wenn Sie nur Kinder übergeben, verwenden Sie 'this.props.children'. – Sia

+0

kannst du deine babel config zeigen? –

Antwort