mlabonne's picture
upload demo files (#1)
01488bc
raw
history blame contribute delete
649 Bytes
import { forwardRef, useEffect, useMemo } from "react";
import { FluidEffect } from "./FluidEffect";
import type { EffectProps } from "../types";
export const Effect = forwardRef(function Fluid(props: EffectProps, ref) {
// prevent re-creating the effect on every render
// eslint-disable-next-line react-hooks/exhaustive-deps
const effect = useMemo(() => new FluidEffect(props), []);
useEffect(() => {
effect.state = { ...props };
effect.update();
}, [effect, props]);
useEffect(() => {
return () => {
effect.dispose?.();
};
}, [effect]);
return <primitive ref={ref} object={effect} dispose={null} />;
});