Skip to content

Instantly share code, notes, and snippets.

View ElhamFadel's full-sized avatar
💭
( وما يعلم جنود ربك إلا هو )

Software Engineer Elham ElhamFadel

💭
( وما يعلم جنود ربك إلا هو )
View GitHub Profile
{
"name": "Elham Elshami",
"email": "elhamelshami.dev",
"linkedin": "linkedin.com/in/elham-elshami",
"medium": "medium.com/@elhamelshami.dev"
}
"Typescript React Function Component": {
"prefix": "tf",
"body": [
"",
"interface ${TM_FILENAME_BASE}Props {",
"$1",
"}",
"",
"export const $TM_FILENAME_BASE: React.FC<${TM_FILENAME_BASE}Props> = ({$2}) => {",
"\t\treturn ($3);",
import { useCallback, useMemo, useState } from "react";
const executeFunctions = (...funs) => (...args) =>
funs.forEach((fun) => fun && fun(...args));
export default function useToggle() {
const [isToggle, setStateToggle] = useState(false);
const toggle = useCallback(
() => setStateToggle((prevValue) => !prevValue),
[]
);
const getTogglerProps = useCallback(
//update
const getTogglerProps = useCallback(
(props) => ({
is_on: `${isToggle}`,
onClick: toggle,
...props
}),
[toggle, isToggle]
);
@ElhamFadel
ElhamFadel / App.js
Last active September 19, 2022 07:02
import useToggle from "./useToggle";
function App() {
const {getTogglerProps,isToggle} = useToggle();
return (
<div className="App">
//after
<button {...getTogglerProps()}>Click here</button>
{
isToggle?<h1>Hiiiiiiiii Geeks</h1> :null
}
@ElhamFadel
ElhamFadel / App.js
Last active September 19, 2022 07:03
import useToggle from "./useToggle";
function App() {
const { togglerProps, isToggle } = useToggle();
return (
<div className="App">
//before
<button {...togglerProps}>Click here</button>
{isToggle ? <h1>Hiiiiiiiii Geeks</h1> : null}
</div>
);
@ElhamFadel
ElhamFadel / useToggle.js
Last active September 19, 2022 20:35
Hook without prop getter pattern
import { useCallback, useMemo, useState } from "react";
export default function useToggle() {
const [isToggle, setStateToggle] = useState(false);
const toggle = useCallback(
() => setStateToggle((prevValue) => !prevValue),
[]
);
//look here 👇 this object
const togglerProps = useMemo(
@ElhamFadel
ElhamFadel / useToggle.js
Last active September 19, 2022 20:32
Hook using prop getter pattern
import { useCallback, useMemo, useState } from "react";
export default function useToggle() {
const [isToggle, setStateToggle] = useState(false);
const toggle = useCallback(
() => setStateToggle((prevValue) => !prevValue),
[]
);
//update here 👇 this using function
const getTogglerProps = useCallback(