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

366
Views
La función React select npm onBlur devuelve un error

Hola a todos, tengo un problema con la función onBlur de selección de reacción, investigué mucho y analicé problemas relevantes de git, pero aún no pude encontrar una respuesta. La función OnBlur no obtiene los valores seleccionados, el valor en onBlur se muestra indefinido. si la respuesta disponible por favor sugiérame. Gracias por la ayuda

Codesanbox Enlace para referencia:

Editar extraño-sol-uojxs

 import React, { useState } from "react"; import Select from "react-select"; import "./styles.css"; export default function App() { const [value, setValue] = useState(); const options = [ { label: "first option", value: 1 }, { label: "second option", value: 2 }, { label: "third option", value: 3 } ]; const onSelect = (value) => { setValue(value); }; const onBlurValue = (value) => { console.log(value); }; return ( <div> <Select value={options.label} options={options} onChange={onSelect} blurInputOnSelect onBlur={onBlurValue} /> </div> ); }
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Considere este código (vea los comentarios):

 import React, { useState } from "react"; import Select from "react-select"; import "./styles.css"; export default function App() { const [value, setValue] = useState(); const options = [ { label: "first option", value: 1 }, { label: "second option", value: 2 }, { label: "third option", value: 3 } ]; // destructuring the object to get 'value' property // (the passed object looks like { label, value } ) const onSelect = ({value}) => { // here the 'value' variable is being set console.debug("selected value:", value ) setValue(value); }; // destructuring event object to get 'target' property const onBlurValue = ({target}) => { console.log("onBlur target value:", target.value); // the value is not updated yet, so it holds the previously set value console.log("onBlur value:", value || "undefined"); }; return ( <div> Current value is: {value || "undefined" } <Select // the value prop does nothing here // value={options.label} options={options} onChange={onSelect} blurInputOnSelect onBlur={onBlurValue} /> </div> ); }

Editar relajado-ellis-y1z2d

Como dijo @a.mola: el setValue es asíncrono y la variable de value aún no se actualiza cuando se activa el evento onBlur , por lo que mantiene el valor establecido previamente.

No estoy seguro de qué está tratando de lograr dentro del evento onBlur , puede que no sea el lugar adecuado para hacerlo.

Si necesita generar el value de alguna manera, puede hacerlo dentro de la parte de return (como se hace en el código anterior).

Si necesita validar el value o hacer algo en función de su valor recién seleccionado, puede hacerlo dentro de la función onSelect .

about 4 years ago · Juan Pablo Isaza Report

0

Puede agregar una variable de instancia para almacenar el valor seleccionado (tal vez no sea la mejor solución, pero debería funcionar)

 export default function App() { const [value, setValue] = useState(); const valueRef = useRef(); const onSelect = value => { valueRef.current = value; setValue(value); }; const onBlurValue = () => { console.log(valueRef.current); }; return ( <div> <Select value={value} options={options} onChange={onSelect} blurInputOnSelect onBlur={onBlurValue} /> </div> ); }

El problema con esta solución es que almacena el valor seleccionado en dos lugares (la variable de estado y la variable de instancia de referencia).

La pregunta es, ¿por qué necesita obtener el valor seleccionado dentro del controlador onBlur? El controlador onChange podría ser suficiente en su caso, ¿no es así?

about 4 years ago · Juan Pablo Isaza Report

0

Eso podría ser un problema con React de esa versión, o un conflicto entre react-select y esa versión específica de react

Intente actualizar tanto react como react-dom a la última versión (17.0.2) y react-select a 4.3.1 para resolver el problema.

Ejemplo de trabajo:

Editar distraído-wright-cp0ws

about 4 years ago · Juan Pablo Isaza 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!