Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

669
Views
Evento OnChange usando React JS para el menú desplegable
var MySelect = React.createClass({ change: function(){ return document.querySelector('#lang').value; }, render: function(){ return( <div> <select id="lang"> <option value="select" onChange={this.change}>Select</option> <option value="Java" onChange={this.change}>Java</option> <option value="C++" onChange={this.change}>C++</option> </select> <p></p> <p value={this.change}></p> </div> ); } }); React.render(<MySelect />, document.body);

El evento onChange no funciona.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

El evento de cambio se desencadena en el elemento <select> , no en el elemento <option> . Sin embargo, ese no es el único problema. La forma en que definió la función de change no provocará una nueva representación del componente. Parece que es posible que aún no hayas comprendido completamente el concepto de React, por lo que tal vez "Pensar en React" te ayude.

Debe almacenar el valor seleccionado como estado y actualizar el estado cuando cambie el valor. Actualizar el estado activará una nueva representación del componente.

 var MySelect = React.createClass({ getInitialState: function() { return { value: 'select' } }, change: function(event){ this.setState({value: event.target.value}); }, render: function(){ return( <div> <select id="lang" onChange={this.change} value={this.state.value}> <option value="select">Select</option> <option value="Java">Java</option> <option value="C++">C++</option> </select> <p></p> <p>{this.state.value}</p> </div> ); } }); React.render(<MySelect />, document.body);

También tenga en cuenta que los elementos <p> no tienen un atributo de value . React/JSX simplemente replica la conocida sintaxis HTML, no introduce atributos personalizados (con la excepción de key y ref ). Si desea que el valor seleccionado sea el contenido del elemento <p> , simplemente colóquelo dentro, como lo haría con cualquier contenido estático.

Obtenga más información sobre el manejo de eventos, el estado y los controles de formulario:

  • http://facebook.github.io/react/docs/interactividad-y-dinamica-uis.html
  • http://facebook.github.io/react/docs/forms.html
over 4 years ago · Santiago Trujillo Report

0

Ganchos de reacción (16.8+):

 const Dropdown = ({ options }) => { const [selectedOption, setSelectedOption] = useState(options[0].value); return ( <select value={selectedOption} onChange={e => setSelectedOption(e.target.value)}> {options.map(o => ( <option key={o.value} value={o.value}>{o.label}</option> ))} </select> ); };
over 4 years ago · Santiago Trujillo Report

0

import React, { PureComponent, Fragment } from 'react'; import ReactDOM from 'react-dom'; class Select extends PureComponent { state = { options: [ { name: 'Select…', value: null, }, { name: 'A', value: 'a', }, { name: 'B', value: 'b', }, { name: 'C', value: 'c', }, ], value: '?', }; handleChange = (event) => { this.setState({ value: event.target.value }); }; render() { const { options, value } = this.state; return ( <Fragment> <select onChange={this.handleChange} value={value}> {options.map(item => ( <option key={item.value} value={item.value}> {item.name} </option> ))} </select> <h1>Favorite letter: {value}</h1> </Fragment> ); } } ReactDOM.render(<Select />, window.document.body);
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!