Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

359
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda