Wie verwenden Sie Reagieren refs zu konzentrieren Redux Formularfeld?
Ich bin versucht, zu Reagieren refs zu konzentrieren Redux-Form Feld, wenn es Reittiere.
Wenn ich versuche this.refs.title.getRenderedComponent().focus()
im componentDidMount
ist, wird ein Fehler geworfen zu sagen:
edit_fund.js:77 Uncaught TypeError: Cannot read property 'getRenderedComponent' of undefined
Wenn ich Konsole.melden Sie diese.refs, ist es meist ein leeres Objekt, und manchmal erkennt 'Titel' als ref, aber es ist nicht verlässlich.
Bin ich mit refs falsch? Mein code ist unten als Referenz.
componentDidMount = () => {
this.refs.title
.getRenderedComponent()
.focus();
}
...
<Field
id="title"
name="title"
component={FormInput}
type="text"
ref="title" withRef
/>
- Das ist seltsam, dein code sieht gut aus, zeig bitte die gesamte Bauteil-code
- haben Sie das gelöst?
- Nein, nie gelöst, leider.
- Ich habe so etwas ähnlich wie diese Arbeit, wenn die Komponente-Typ ist ein einfacher Typ wie
input
. Benutzerdefinierte Komponenten wird der Ertrag refs, aber Sie sind nicht von DOM-Elementen, die support-Anrufe wiefocus()
. Stattdessen werden Sie Reagieren Elemente.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bitte versuchen Sie die Einstellung ref mit callback-Funktion:
und dann verwenden Sie diese, um zugrunde liegende DOM-Knoten:
wenn der DOM-input-element gewickelt ist, in einem anderen element:
Entsprechend zu Reagieren docs mit refs mit einer Zeichenkette, die einige Probleme haben. Bitte überprüfen Sie docs für mehr details.
Ich benutze redux-form und Material UI und hatte das folgende zu tun.
MaterialCheckboxField
undMaterialTextField
sind benutzerdefinierte Komponenten in mein Projekt Umhüllungmaterial-ui/{Checkbox,TextField}
.Konvertierte ich
MaterialTextField
zu einem Klasse Komponente (gemäß dem Reagieren docs).Bereich Einstellung von Fokus (innerhalb der
render()
- Methode):Dem Feld, das den Fokus erhalten (innerhalb der
render()
- Methode):