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

151
Views
React Hooks: ¿No se puede acceder a la variable useState actualizada fuera de useEffect?

Soy nuevo en reaccionar y crear la aplicación de reacción, en esta aplicación, los alimentos se pueden arrastrar a la lista de pedidos usando reaccionar dnd, el problema al que me enfrento es que no puedo obtener la variable OrderList actualizada en ninguna función fuera de useEffect,

en addFoodToOrderList , useEffect , estoy imprimiendo la misma variable OrderList pero en addFoodToOrderList la salida está vacía, sé que useState es una función asíncrona, pero al agregar el tercer elemento a la lista de pedidos, debería mostrar al menos los primeros 2 elementos pero está dando una matriz vacía (0 ) como salida, el caso es diferente para useEffect

código:

 export default function FoodCardContainer() { const [liked,setLiked] = useState("") function handleLike(e) { setLiked(prevNotes => { return [...prevNotes,e]; }); } const [orderList, setOrderList] = useState([]); const [{ isOver }, drop] = useDrop(() => ({ accept: "div", drop: (item) => { addFoodToOrderList(item.id)}, collect: (monitor) => ({ isOver: !!monitor.isOver(), }), })); const addFoodToOrderList = (id) => { const orderItem = fooditems.filter((f) => id === f._id) setOrderList((preorderLists) => {return [...preorderLists,orderItem[0]]}); console.log("this one outside useEffect",orderList) }; useEffect(() => { console.log("this one inside useEffect",orderList) },[orderList])

mi consola:

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Parece que la función pasada a drop fue memorizada y nunca actualizada. Los documentos mencionan esto como parámetros para useDrop :

deps Una matriz de dependencia utilizada para la memorización. Esto se comporta como el gancho integrado useMemoReact. El valor predeterminado es una matriz vacía para la especificación de función y una matriz que contiene la especificación para una especificación de objeto.

Dado que proporcionó la especificación de la función, de forma predeterminada se vació la matriz como deps.

Por lo tanto, debe especificar deps.

 const [{ isOver }, drop] = useDrop(() => ({ accept: "div", drop: (item) => { addFoodToOrderList(item.id) }, collect: (monitor) => ({ isOver: !!monitor.isOver(), }), }), [addFoodToOrderList]);
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!