Saltar al contenido principal

useLive()

Renderizado asíncrono de mutaciones de datos activadas de forma remota.

useSuspense() + useSubscription() en un solo hook.

useLive() reacciona a las mutaciones de datos; vuelve a renderizar solo cuando es necesario.

Uso​

import { useLive } from '@data-client/react';
import NumberFlow from '@number-flow/react';
import { getTicker } from './Ticker';

function AssetPrice({ productId }: Props) {
  const ticker = useLive(getTicker, { productId });
  return (
    <center>
      {productId}{' '}
      <NumberFlow
        value={ticker.price}
        format={{ style: 'currency', currency: 'USD' }}
      />
    </center>
  );
}
interface Props {
  productId: string;
}
render(<AssetPrice productId="BTC-USD" />);
Resultado
Store▶

Comportamiento​

Dependencias condicionales

Usar null como segundo argumento de cualquier hook de Data Client significa "no hacer nada".

// todo could be undefined if id is undefined
const todo = useLive(TodoResource.get, id ? { id } : null);
React Native

Al usar React Navigation, useLive() activará las peticiones al recibir el foco si los datos se consideran obsoletos. useLive() también se suscribirá y cancelará la suscripción con el foco y la pérdida de foco, respectivamente.

Tipos​

function useLive(
endpoint: ReadEndpoint,
...args: Parameters<typeof endpoint> | [null]
): Denormalize<typeof endpoint.schema>;

Ejemplos​

Precio de Bitcoin (sondeo)​

Cuando se renderiza nuestro componente con useLive, getTicker obtendrá los datos cada pollFrequency milisegundos.

Explora el ejemplo nextjs

More Demos