AutorÃa | Ultima modificación | Ver Log |
import axios from 'axios'import { useEffect } from 'react'import { useState } from 'react'import { useDispatch } from 'react-redux'import { addNotification } from '../../redux/notification/notification.actions'const useGetDataTable = ({url = '',params = {search: '',length: 10,start: 1}}) => {const dispatch = useDispatch()const [items, setItems] = useState([])const [total, setTotal] = useState(0)const [lastPage, setLastPage] = useState(0)const [startItem, setStartItem] = useState(0)const [lastItem, setLastItem] = useState(0)const getDataTable = () => {axios.get(url, { params: { ...params } }).then(({ data: resData }) => {const { success, data } = resDataif (!success) {dispatch(addNotification({style: 'danger',msg: 'Ha ocurrido un error'}))}setItems(data.items)setTotal(data.total)setLastPage(Math.ceil(data.total / data.items.length))}).catch(() => dispatch(addNotification({ style: 'danger', msg: 'Ha ocurrido un error' })))}useEffect(() => getDataTable(), [params])useEffect(() => {if (params.start > 1) {setStartItem((params.length * (params.start - 1)) + 1)return}setStartItem(1)}, [params.start])useEffect(() => {if (items && startItem > 1) {setLastItem(startItem + (items.length - 1))return}if (items && startItem <= 1) {setLastItem(items.length)return}}, [items])return { items, total, lastPage, startItem, lastItem }}export default useGetDataTable