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

107
Vistas
La tienda Redux está actualizada pero la vista no

Tengo el componente principal Posts.js que asigna cada objeto en la matriz de publicaciones. En esta función, trato de filtrar todas las notas que tienen el mismo post_id que el id del objeto de publicación asignado actual. Todo almacenado en la variable filteredNotes. Luego se lo paso a cada niño. Ahora el problema. Cuando quiero agregar una nueva nota en una publicación específica, la vista no se actualiza (la nueva nota no se agregó a la lista) aunque la base de datos y la tienda redux se actualizaron correctamente. Pero cuando trato de eliminar esa función de filtro, todo funciona bien, así que supongo que el problema principal está ahí. ¿Algúna idea de cómo arreglar esto? Gracias

Publicaciones.js

 const posts = useSelector((state) => state.post.posts); const notes = useSelector((state) => state.notes.notes); useEffect(() => { dispatch(getPosts()); dispatch(getNotes()); }, []); const addNoteHandle = (val) => { dispatch(addNote({new_note: val})); } return ( <div className="post__page"> <div className="post__list"> {posts.map((data) => { let filteredNotes = notes.filter((i) => i.post_id === data.id); return <Post data={data} notes={filteredNotes} />; })} </div> <PostForm addNewNote={addNoteHandle} /> </div> );

Post.js

 export const Post = ({ data, notes }) => { return ( <div className="post__item"> <div className="post__title">{data.title}</div> <div className="post__note"> {notes.map(note => <div>{note.text}</div>)} </div> </div> ); };

NoteForm.js

 const NoteForm = ({ addNewNote }) => { const [text, setText] = useState(""); return ( <div> <Input value={text} onChange={(e) => setText(e.target.value)} /> <Button type="primary" onClick={() => addNewNote(text)} > <SendOutlined /> </Button> </div> ); };

Acción

 export const addNote = ({ new_note }) => async (dispatch) => { try { const res = await axios.post("http://localhost:9000/api/note", new_note); dispatch({ type: ADD_NOTE, payload: res.data }); } catch (err) { dispatch({ type: NOTE_FAIL }); } };

reductor

 case ADD_NOTE: return { ...state, notes: [...state.notes, payload] };
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

use useSelector para obtener el valor del componente de la tienda redux. por alguna razón, el gancho setText no funcionará para actualizar el componente de la página. Tuve un problema similar y no pude encontrar ninguna solución. Este código puede ayudar:

 let text =''; text = useSelector((state) => state.yourReducer.text);

Ahora muestra tu texto donde quieras, esto solucionará el problema hasta que encuentres una solución real.

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