20 lines
636 B
TypeScript
Raw Normal View History

import { useObservable } from "./useObservable";
import { useState } from "react";
import type { StatefulObservable } from "../StatefulObservable";
/**
* Equivalent of https://docs.evt.land/api/react-hooks
* */
2024-06-05 06:10:11 +02:00
export function useRerenderOnChange(obs: StatefulObservable<unknown>): void {
//NOTE: We use function in case the state is a function
2024-06-05 06:10:11 +02:00
const [, setCurrent] = useState(() => obs.current);
useObservable(
({ registerSubscription }) => {
2024-06-05 06:10:11 +02:00
const subscription = obs.subscribe(current => setCurrent(() => current));
registerSubscription(subscription);
},
2024-06-05 06:10:11 +02:00
[obs]
);
}