Comment obtenir des valeurs de types d'entrée à l'aide de ce.refs dans reactjs?
Pas en mesure d'obtenir les valeurs du type d'entrée à l'aide de ce.refs...
comment obtenir que des valeurs de type d'entrée
export class BusinessDetailsForm extends Component {
submitForm(data) {
console.log(this.refs.googleInput.value)
}
}
reder() {
return(
<form onSubmit={this.submitForm}>
<Field type="text"
name="location"
component={GoogleAutoComplete}
id="addressSearchBoxField"
ref="googleInput"
/>
</form>
)
}
}
OriginalL'auteur Anthony Winzlet | 2017-03-31
Vous devez vous connecter pour publier un commentaire.
Vous devriez éviter de
ref="googleInput"
comme il est maintenant considéré comme héritage. Vous devez déclarerÀ l'intérieur de votre gestionnaire, vous pouvez utiliser
this.googleInput
de référence de l'élément.Puis à l'intérieur de votre
submitForm
fonction, vous pouvez obtenir la valeur de texte avecthis.googleInput._getText()
Chaîne refs sont hérités
https://facebook.github.io/react/docs/refs-and-the-dom.html
Modifier
De Réagir 16.3, le format pour la création de refs sont:
ref
pour obtenir la valeur d'un champ de saisie, cette réponse fournit une solution afin de satisfaire que.Cela ne fonctionne pas. J'obtiens un message d'erreur indiquant que
Uncaught TypeError: _this.googleInput._getText is not a function
OriginalL'auteur Dan
à l'aide de
ref={ inputRef => this.input = inputRef }
est considéré comme legs. Dans Réagissent 16.3 au-delà, vous pouvez utiliser le code ci-dessous,EDIT: merci pour le commentaire @stormwild
De réagir.createRef a été introduit dans de Réagir 16.3. Si vous utilisez une version antérieure de Réagir de rappel refs est recommandé. reactjs.org/docs/refs-and-the-dom.html
OriginalL'auteur mohitSehgal
OriginalL'auteur Johib Khan
Je pense que le plus idiomatique façon est d'utiliser des
state
au lieu derefs
, bien qu'il soit un peu plus de code dans ce cas, puisque vous n'avez qu'une seule entrée.Voir https://facebook.github.io/react/docs/forms.html#controlled-components.
handleChange = ({ target: { name, value } }) => this.setState({ [ name ]: value });
En gardant un texte de saisie de la valeur dans
state
peut apporter toute une liste de re-rendu de maux de tête pour les composants enfants; l'aide d'unref
évite ce et est bien pratique.Je ne suis pas sûr de ce que les maux de tête. Par la Réagir docs, "La norme à atteindre, c'est avec une technique dite “contrôlée des composants.”
OriginalL'auteur adrice727
En 2018, vous devez écrire dans le constructeur ceci:
Dans le constructeur de classe, vous devez ajouter quelque chose comme
this.input = React.createRef()
Exemples ici:
https://reactjs.org/docs/uncontrolled-components.html
OriginalL'auteur yestema
J'ai essayé la réponse ci-dessus (https://stackoverflow.com/a/52269988/1978448) et trouvé qu'il n'a travaillé que pour moi, quand j'ai mis les refs dans l'état, mais pas quand je viens de faire les propriétés du composant.
Constructeur:
et dans mon handleSubmit-je créer une charge utile de l'objet à poster sur mon serveur comme ceci:
OriginalL'auteur NULL pointer
La réagir docu, l'explique très bien: https://reactjs.org/docs/refs-and-the-dom.html
ceci est considéré comme l'héritage:
considérant que, cela est considéré comme la voie à suivre:
OriginalL'auteur bjoern
À l'aide de
RN 0.57.8
lorsqu'on l'a essayéthis.googleInput._getText()
, Il a entraîné une erreur_getText is not a function
donc j'ai impriméthis.googleInput
dans la console et a constaté que_getText()
est une fonction à l'intérieur_root
this.googleInput._root._getText()
this.googleInput._root._lastNativeText
- Ce sera le retour de la dernière etat qui n'est pas l'état actuel veuillez être prudent lors de son utilisation.OriginalL'auteur Navneet kumar