He visto algunas publicaciones similares, no he encontrado mi respuesta. Tengo este código tratando de eliminar un objeto de una matriz, con el backend configurado para que funcione en Post Man, cuando comencé a trabajar con Redux encontré este problema.
acción.js :
export const deletePost = (id) => async (dispatch) => { try { await axios.delete(`api/posts/${id}`); dispatch({ type: DELETE_POST, payload: { id }, }); dispatch(setAlert('Post removed', 'success')); } catch (err) { dispatch({ type: POST_ERROR, payload: { msg: err.response.statusText, status: err.response.status }, }); } };Reducer se ha combinado en el archivo root reducer
Reductor.js :
case DELETE_POST: return { ...state, posts: state.posts.filter((post) => post._id !== payload), ///Removes the post from the array loading: false, };componente.js :
{!auth.loading && user === auth.user._id && ( <button onClick={() => deletePost(_id)} type='button' className='btn btn-danger' > <i className='fas fa-delete-left'></i> </button> )}Intenté depurar y parece que la acción deletePost() ni siquiera comienza a ejecutarse cuando hago clic en el botón.
Descubrí que este código en realidad se elimina, pero en el archivo action.js cuando envío el tipo DELETE_POST , luego ejecuta la captura inmediatamente. El problema está en la función try{dispatch()}, ya que lo que quiero registrar antes de que realmente se registre, pero lo que quiero registrar después no.
Editar: dice que el envío no es una función para cada envío en el archivo action.js ...