Skip to content

Instantly share code, notes, and snippets.

@plusgut
Created November 27, 2020 13:00
Show Gist options
  • Save plusgut/6870f5b4506294608d782dbed7fee4d3 to your computer and use it in GitHub Desktop.
Save plusgut/6870f5b4506294608d782dbed7fee4d3 to your computer and use it in GitHub Desktop.
import plusnew, { component, Props, store } from "@plusnew/core";
import { ElementLifecycle } from "@plusnew/driver-dom";
type props = {
children: any;
};
export default component(
__dirname,
(Props: Props<props>, componentInstance) => {
const show = store(false);
const observer = new IntersectionObserver((entries) => {
if (entries.some((entry) => entry.isIntersecting)) {
show.dispatch(true);
}
});
componentInstance.registerLifecycleHook("componentWillUnmount", () =>
observer.disconnect()
);
return (
<ElementLifecycle
elementDidMount={(element) => {
observer.observe(element);
}}
>
<div>
<show.Observer>
{(showState) =>
showState && <Props>{(props) => props.children}</Props>
}
</show.Observer>
</div>
</ElementLifecycle>
);
}
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment