Skip to content

Instantly share code, notes, and snippets.

@broerjuang
Created September 23, 2019 06:51
Show Gist options
  • Save broerjuang/a0811be6a77652c2d35f3c557971e27c to your computer and use it in GitHub Desktop.
Save broerjuang/a0811be6a77652c2d35f3c557971e27c to your computer and use it in GitHub Desktop.
Custom Hooks
type windowSize = {
height: int,
width: int,
};
let useWindowResize = () => {
let getWindowSize = (): option(windowSize) =>
switch ([%external window]) {
| None => None
| Some(w) =>
Some({width: Window.innerWidth(w), height: Window.innerHeight(w)})
};
let (windowSize, setWindowSize) = React.useState(getWindowSize);
React.useEffect1(
() => {
let handleResize = _ => {
setWindowSize(_ => getWindowSize());
};
switch ([%external window]) {
| None => None
| Some(w) =>
Window.addEventListener("resize", handleResize, w);
Some(() => Window.removeEventListener("resize", handleResize, w));
};
},
[||],
);
windowSize;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment