Search code examples
javascriptreactjsreact-hooksuse-effectuse-state

How to update lists after delete a category


I want to update the Category list after delete a category, I used custom hook for fetching data from the server. I'm not sure how to update state on custom fetch hook

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;
                })
            })
    }


Solution

  • Adding data as the dependency to the useEffect hook may help, try this,

        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;
                    })
                })
        }