Tengo una forma simple en mi render
función, así:
render : function() {
return (
<form>
<input type="text" name="email" placeholder="Email" />
<input type="password" name="password" placeholder="Password" />
<button type="button" onClick={this.handleLogin}>Login</button>
</form>
);
},
handleLogin: function() {
//How to access email and password here ?
}
¿Qué debo escribir en mi handleLogin: function() { ... }
para acceder Email
y Password
campos?
javascript
html
reactjs
frontend
myusuf
fuente
fuente
onSubmit
el formulario en lugar del clic del botón; de esta manera también manejará al usuario que envía el formulario presionando Intro.<form>
una con a<button>
o<input>
contype=submit
cuando el usuario presione Entrar en cualquiera de los formularios<input type=text>
. Si confía en unonClick
botón, el usuario debe hacer clic en el botón o enfocarlo y presionar Entrar / Barra espaciadora. El usoonSubmit
habilitará ambos casos de uso. Cuando los formularios no admiten Enter para enviar, pueden sentirse rotos.Respuestas:
Use los
change
eventos en las entradas para actualizar el estado del componente y acceder a él enhandleLogin
:Violín de trabajo .
Además, lea los documentos, hay una sección completa dedicada al manejo de formularios : Formularios
Anteriormente, también podía usar la mezcla de ayuda de enlace de datos bidireccional de React para lograr lo mismo, pero ahora está en desuso a favor de establecer el valor y cambiar el controlador (como se indicó anteriormente):
La documentación está aquí: Ayudantes de enlace bidireccionales .
fuente
valueLink
, su primer ejemplo debe establecer elvalue
de los elementos de entrada. Sin eso, los valores están "incontrolados" en términos de Reacción.<input ... value={this.state.password}>
.Hay algunas formas de hacer esto:
1) Obtenga valores de una matriz de elementos de formulario por índice
2) Usando nombre atributo de en html
3) Usar referencias
Ejemplo completo
fuente
Un enfoque alternativo es utilizar el
ref
atributo y hacer referencia a los valores conthis.refs
. Aquí hay un ejemplo simple:Se puede encontrar más información en los documentos de React: https://facebook.github.io/react/docs/more-about-refs.html#the-ref-string-attribute
Por muchas de las razones descritas en ¿Cómo uso los botones de opción en React? Este enfoque no siempre es el mejor, pero presenta una alternativa útil en algunos casos simples.
fuente
Una manera fácil de lidiar con los árbitros:
fuente
Object.keys()
seguido paramap()
esto:Object.keys(this.refs).map(field => formData[field] = this.refs[field].value)
<input type="text" ref={(input) => { this.textInput = input; }} />
Agregando a la respuesta de Michael Schock:
Vea este artículo medio: Cómo manejar formularios con Just React
Este método obtiene datos del formulario solo cuando se presiona el botón Enviar. Mucho más limpio IMO!
fuente
Puede cambiar el
onClick
controlador de eventos en el botón a unonSubmit
controlador en el formulario:Luego puede utilizar
FormData
para analizar el formulario (y construir un objeto JSON a partir de sus entradas si lo desea).fuente
Sugeriría el siguiente enfoque:
fuente
Si todas sus entradas / área de texto tienen un nombre, puede filtrar todo desde event.target:
Forma totalmente incontrolada 😊 sin métodos onChange, value, defaultValue ...
fuente
Para aquellos que no quieren usar ref y restablecer el estado con
OnChange
evento, puede usar el simple controlador OnSubmit y recorrer elFormData
objeto. Este ejemplo está usando React Hooks:fuente
Además, esto también se puede usar.
fuente
Dale a tus entradas una referencia como esta
entonces puedes acceder a él en tu identificador Iniciar sesión como soo
fuente
Ejemplo más claro con la destrucción de es6
fuente
Si está utilizando Redux en su proyecto, puede considerar usar este componente de orden superior https://github.com/erikras/redux-form .
fuente
En muchos eventos en javascript, tenemos los
event
que dan un objeto que incluye qué evento sucedió y cuáles son los valores, etc.Eso es lo que usamos con los formularios en ReactJs también ...
Entonces, en su código, establece el estado en el nuevo valor ... algo como esto:
Además, este es el ejemplo de formulario en React v.16, solo como referencia para el formulario que creará en el futuro:
fuente
Yo uso así usando React Component state:
fuente
Imagen de salida adjunta aquí
fuente
Esto podría ayudar a los usuarios de Meteor (v1.3):
fuente
Para mejorar la experiencia del usuario; Cuando el usuario hace clic en el botón Enviar, puede intentar que el formulario muestre primero un mensaje de envío. Una vez que hayamos recibido una respuesta del servidor, puede actualizar el mensaje en consecuencia. Logramos esto en React encadenando estados. Ver codepen o fragmentos a continuación:
El siguiente método realiza el primer cambio de estado:
Tan pronto como React muestre el mensaje de envío anterior en la pantalla, llamará al método que enviará los datos del formulario al servidor: this.sendFormData (). Por simplicidad, agregué un setTimeout para imitar esto.
En React, el método this.setState () representa un componente con nuevas propiedades. Por lo tanto, también puede agregar algo de lógica en el método render () del componente de formulario que se comportará de manera diferente según el tipo de respuesta que obtengamos del servidor. Por ejemplo:
codepen
fuente
Si tiene múltiples ocurrencias de un nombre de elemento, entonces debe usar forEach ().
html
js
Tenga en cuenta que el dels en este caso es RadioNodeList, no una matriz, y no es Iterable. ForEach () es un método integrado de la clase de lista. No podrá usar un mapa () o reducir () aquí.
fuente