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

119
Views
cómo actualizar la matriz de estado anidado y luego devolver la reacción de toda la matriz

Estoy usando React Hooks. Este es mi estado:

 const [ chats, setChats ] = useState()

Y tengo esta matriz en mi estado de "chats":

 [ { "messages": [ //I refer this field { "message": "hi", "seen": false, "_id": "61658b533da2d51eace71b31", "user": {"user data"} } ], "users": ["some data"], "avatar": "data", "_id": "61634b62c1a7612f04296335", "type": "private" }, { "messages": [], "users": ["some data"], "avatar": "data", "_id": "616355d7e124771d98426240", "type": "private" } ]

Entonces, solo necesito actualizar el campo "mensajes" del elemento "0" de esa matriz de "chat" con este objeto newMessage :

 { "message": "another hi", "seen": false, "_id": "61658f551ccbac34a8d10130", "user": {"some user data"} }

Lo intenté con la respuesta más popular, pero solo devuelve el campo "mensajes", y necesito devolver toda la matriz .

Código:

 setChats([...chats[currentlyChatIndex].messages, newMessage])
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Puede mapear sobre la matriz, y si está en el ChatIndex currentlyChatIndex , puede agregar el campo de messages .

Ejemplo

 const data = [ { "messages": [ { "message": "hi", "seen": false, "_id": "61658b533da2d51eace71b31", "user": "user data" } ], "users": ["some data"], "avatar": "data", "_id": "61634b62c1a7612f04296335", "type": "private" }, { "messages": [], "users": ["some data"], "avatar": "data", "_id": "616355d7e124771d98426240", "type": "private" } ] const addMessage = (index, message) => { return data.map((el, i) => i === index ? {...el, messages: [...el.messages, message]} : el) } console.log(addMessage(0, {message: 'another hi'}))

Tu caso

 setChats(chats => chats.map((chat, index) => index === currentlyChatIndex ? { ...chat, messages: [...chat.messages, newMessage] } : chat))
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!