1.0.5 • Published 1 year ago

@noeg/usepolling v1.0.5

Weekly downloads
-
License
ISC
Repository
github
Last release
1 year ago

usePolling

A React hook for implementing polling functionality with configurable intervals, conditions, and callbacks.

Installation

npm install @noeg/usepolling
# or
yarn add @noeg/usepolling
# or
pnpm add @noeg/usepolling

Features

  • 🔄 Automatic polling with configurable intervals
  • ⏱️ Customizable polling conditions
  • 🎯 Success and error callbacks
  • ⚡ Immediate or delayed start options
  • 🛑 Manual control over polling (start/stop)
  • 💪 TypeScript support

Usage

import { usePolling } from '@noeg/usepolling'

function MyComponent() {
  const { data, error, isLoading, startPolling, stopPolling } = usePolling({
    // Required: Function that returns a Promise
    fetcher: async () => {
      const response = await fetch('https://api.example.com/data')
      return response.json()
    },

    // Optional: Polling interval in milliseconds (default: 5000)
    interval: 3000,

    // Optional: Condition to stop polling (default: () => false)
    condition: (data) => data.status === 'completed',

    // Optional: Success callback
    onSuccess: (data) => {
      console.log('Data received:', data)
    },

    // Optional: Error callback
    onError: (error) => {
      console.error('Polling failed:', error)
    },

    // Optional: Start polling immediately (default: true)
    immediate: true,
  })

  if (isLoading) {
    return <div>Loading...</div>
  }

  if (error) {
    return <div>Error: {error.message}</div>
  }

  return (
    <div>
      <pre>{JSON.stringify(data, null, 2)}</pre>
      <button onClick={startPolling}>Start Polling</button>
      <button onClick={stopPolling}>Stop Polling</button>
    </div>
  )
}

API Reference

Options

OptionTypeRequiredDefaultDescription
fetcher() => Promise<T>Yes-Async function that fetches data
intervalnumberNo5000Polling interval in milliseconds
condition(data: T) => booleanNo() => falseFunction to determine when to stop polling
onSuccess(data: T) => voidNo-Callback function called on successful fetch
onError(error: Error) => voidNo-Callback function called on fetch error
immediatebooleanNotrueWhether to start polling immediately

Return Value

PropertyTypeDescription
dataT \| nullThe latest data received from the fetcher
errorError \| nullError object if the last fetch failed
isLoadingbooleanWhether a fetch is in progress
startPolling() => voidFunction to manually start polling
stopPolling() => voidFunction to manually stop polling

License

MIT

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago