ein Kinder Verfahren durch Ich habe eine Editor
Komponente, die so aussieht:React-JS: HOC-Wrapper Zugriff
class EditorComp extends Component {
focus() {
this.refs.input.focus();
}
render() {
return (
<input
ref="input"
...
/>
);
}
}
Damit Elemente, die EditorComp
verwenden, um einen ref einstellen und seine focus
Methode aufrufen und anwenden Fokus die untere Ebene Eingang, etwa so:
class Parent extends Component {
render() {
return (
<div>
<button onClick={() => this.refs.editor.focus()}>Focus</button>
<EditorComp ref="editor" />
</div>
);
}
}
wenn jedoch EditorComp
in einer höheren Ordnung Komponente (wie react-redux
‚s connect()
) die EditorComp
verliert Einwickeln der Fokus-Methode, weil es unter dem HOC gefangen wird.
Beispiel:
const WrappedEditor = connect()(EditorComp); // react-redux's connect, for example
const wrappedEditorInstance = <WrappedEditor />;
wrappedEditorInstance.focus() // Error! Focus is not a function.
Gibt es eine Möglichkeit up-Methode oder Komponente Referenzen durch die Mutter HOV eine untergeordnete Komponente zu übergeben?
Edit: Oder gibt es eine umgekehrte Lösung, in der der Elternteil eine Funktion übergibt, die den Fokusbefehl setzt? Ich habe überlegt, ein event-emitter
zu verwenden, und das Kind auf ein focus
Ereignis zu hören, das vom Elternteil genannt wird, jedoch scheint dies unhandlich und unnötig.
Danke für die Antwort! Die 1-Wege-Return-Comp-Instanz ist nahezu perfekt, es sieht jedoch so aus, als ob die 2-Wege-Pass-Down-Position nicht wie vorgesehen funktioniert. Der 'EditorComp' versucht, den Fokus bei jeder Aktualisierung zu stehlen, solange' this.props.isfocus === true'. Das kann wahrscheinlich behandelt werden, aber es sollte beachtet werden. Danke nochmal! –