Actualizando la Tienda después de Despachar una Acción.
Tengo un sitio web de redes sociales donde los usuarios pueden dar “Me gusta”/”No me gusta” a las publicaciones. Tengo un “reducer” para el usuario y las publicaciones. Mi compañero de grupo implementó la función de “Me gusta”/”No me gusta” de la siguiente manera: cuando el usuario le da “Me gusta” a una publicación, el cliente llama a mi API con el “ENDPOINT” ‘posts/:id/like’, lo que incrementará el conteo de “Me gusta” para la publicación en la base de datos de publicaciones y agregará la publicación al arreglo de publicaciones que le gustaron al usuario en la base de datos de usuarios. La API devolverá una respuesta que contiene el usuario y la publicación actualizados, lo que resultará en las siguientes acciones.
dispatch({
type: LIKEPOSTSUCCESS,
payload: res.payload.post
})
dispatch({
type: UPDATE_USER_SUCCESS,
payload: res.payload.user
})
Y los siguientes “reducers”:
case LIKE_POST_SUCCESS:
return {
…state,
…action.payload
}
case UPDATE_USER_SUCCESS:
return {
…state,
…action.payload
}
Este enfoque funciona, pero siento que su enfoque parece “hackish” en el sentido de
1. La solicitud de la API también devuelve el usuario actualizado junto con la publicación actualizada, aunque el ENDPOINT se utiliza para la base de datos de publicaciones.
2. Él está despachando “UPDATE_USER_SUCCESS” para actualizar el objeto de usuario en el almacenamiento de “Redux”, aunque la API de actualización de usuario no se llama.
¿Sería el enfoque correcto
1. Llamar la solicitud de “Me gusta” a la publicación
2. Actualizar el almacenamiento de publicaciones usando la carga útil de la solicitud de “Me gusta” a la publicación.
3. Realizar una solicitud “GET” a la base de datos de usuarios
4. Actualizar el almacenamiento de usuarios usando la carga útil de la solicitud “GET”.
davy.ai
Sí, el enfoque correcto sería: