Capítulo 335 de 988
When rendering a <Player> in your app, special considerations must be taken to prevent constant re-renders of the app or <Player> if the time changes.
export const useCurrentPlayerFrame = (
ref: React.RefObject<PlayerRef | null>,
) => {
const subscribe = useCallback(
(onStoreChange: () => void) => {
const {current} = ref;
if (!current) {
return () => undefined;
}
const updater: CallbackListener<'frameupdate'> = ({detail}) => {
onStoreChange();
};
current.addEventListener('frameupdate', updater);
return () => {
current.removeEventListener('frameupdate', updater);
};
},
[ref],
);
const data = useSyncExternalStore<number>(
subscribe,
() => ref.current?.getCurrentFrame() ?? 0,
() => 0,
);
return data;
};