40
loading...
This website collects cookies to deliver better user experience
const LayoutComponent = () => {
const [onSmallScreen, setOnSmallScreen] = useState(false)
useEffect(() => {
checkScreenSize();
window.addEventListener("resize", checkScreenSize);
}, []);
let checkScreenSize = () => {
setOnSmallScreen(window.innerWidth < 700);
};
return (
<div className={`${onSmallScreen ? "small" : "large"}`}>
<h1>Hello from Default Hooks</h1>
</div>
);
};
import { useState, useEffect } from "react";
const useWindowsWidth = () => {
const [isScreenSmall, setIsScreenSmall] = useState(false);
let checkScreenSize = () => {
setIsScreenSmall(window.innerWidth < 700);
};
useEffect(() => {
checkScreenSize();
window.addEventListener("resize", checkScreenSize);
//Cleanup
return () => window.removeEventListener("resize", checkScreenSize);
}, []);
return isSreenSmall;
};
export default useWindowsWidth;
import React from "react"
import useWindowsWidth from "./useWindowsWidth.js"
const MyComponent = () => {
const onSmallScreen = useWindowsWidth();
return (
//Return some element
)
}
this.props.screenSizeCheck
and woosh! You can reuse the component wherever you want, with whatever size you want.Unlike a React component, a custom Hook doesn’t need to have a specific signature. We can decide what it takes as arguments, and what, if anything, it should return. In other words, it’s just like a normal function. Its name should always start with use so that you can tell at a glance that the rules of Hooks apply to it.