Quiero actualizar la lista de categorías después de eliminar una categoría, utilicé un enlace personalizado para obtener datos del servidor. No estoy seguro de cómo actualizar el estado en el gancho de búsqueda personalizado
const {data, error, loading} = useFetch("/api/admin/category"); const [category, setCategory]= useState([]); useEffect(() => { setCategory(data) },[]) const deleteHandler = (id) => { const deleteRequest = async () => { const data = await axios.delete(`/api/admin/category/${id}`); return data; } deleteRequest() .then(res => { data.filter((item) => { return id !== item.id; }) }) }Agregar data como dependencia al gancho useEffect puede ayudar, intente esto,
const {data, error, loading} = useFetch("/api/admin/category"); const [category, setCategory]= useState([]); useEffect(() => { setCategory(data) },[data]) const deleteHandler = (id) => { const deleteRequest = async () => { const data = await axios.delete(`/api/admin/category/${id}`); return data; } deleteRequest() .then(res => { data.filter((item) => { return id !== item.id; }) }) }¿Podría agregar su enlace personalizado al código proporcionado? y también ser un poco más específico con su consulta?
import {useEffect, useState} from "react"; import axios from "axios"; const useFetch = (url) => { const [data, setData,isLoading] = useState([]); const [error, setError] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { request_get() .then(res => { if (res.request.status === 200) { setTimeout(() => { setLoading(false) setData(res.data.data) },1000) } }) return () => { setData([]); } }, []) const request_get = async () => { const data = await axios.get(url) return data; } return {data: data, error: error, loading:loading} } export default useFetch;en su enlace personalizado, agregue data a su matriz de dependencia;
en su componente en lugar de lo siguiente
useEffect(() => { setCategory(data) },[])intenta usar el operador de propagación
useEffect(() => { setCategory([...data]) },[data])