Skip to content

Instantly share code, notes, and snippets.

View simbathesailor's full-sized avatar
🎯
Focusing

Anil Kumar Chaudhary simbathesailor

🎯
Focusing
View GitHub Profile
@simbathesailor
simbathesailor / useisMountedStateway.jsx
Created February 2, 2020 09:43
useisMountedStateway.jsx
function App() {
// const isMounted = useIsMounted()
const isMounted = useIsMounted();
React.useEffect(() => {
if (isMounted) {
console.log("i am mounted");
}
}, [isMounted]);
@simbathesailor
simbathesailor / useisMountedRefUsage.jsx
Created February 2, 2020 08:38
useisMountedRefUsage.jsx
function App() {
const isMountedRefApproach = useIsMountedRef();
React.useEffect(() => {
if (isMountedRefApproach.current) {
console.log("I am mounted");
}
}, [isMountedRefApproach.current]);
React.useEffect(() => {
@simbathesailor
simbathesailor / useIsMountedRef.jsx
Last active February 2, 2020 08:36
useIsMountedRef.jsx
const useIsMountedRef = () => {
const isMounted = React.useRef(false);
React.useEffect(() => {
isMounted.current = true;
return () => (isMounted.current = false);
}, []);
return isMounted;
};
@simbathesailor
simbathesailor / getTimezone.js
Created January 26, 2020 02:41
getTimezone.js
import { utcToZonedTime, format as formatTimeZone } from 'date-fns-tz';
//'America/Los_Angeles'
// const utcString = '2019-09-25T12:00:00.000Z';
function getTimeZoneText(utcString) {
try {
const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
if (Intl) {
const zoneDateObj = utcToZonedTime(utcString, timeZone);
@simbathesailor
simbathesailor / intersectionobservercallback.js
Created January 22, 2020 17:42
intersectionobservercallback.js
let callback = (entries, observer) => {
entries.forEach(entry => {
// Each entry describes an intersection change for one observed
// target element:
// entry.boundingClientRect
// entry.intersectionRatio
// entry.intersectionRect
// entry.isIntersecting
// entry.rootBounds
// entry.target
@simbathesailor
simbathesailor / intersectionobserver.js
Created January 21, 2020 16:41
intersectionobserver.js
let options = {
root: document.querySelector("#scrollArea"), // null
rootMargin: "0px 0px 0px 0px",
threshold: 1.0 // [0, 0.25, 0.50, 0.75, 1]
};
let observer = new IntersectionObserver(callback, options);
let target = document.querySelector("#listItem");
observer.observe(target);
observer.unobserve(target);
@simbathesailor
simbathesailor / useEffect.jsx
Created January 21, 2020 12:34
useEffect.jsx
React.useEffect(() => {
// your logic side-effect
})
React.useEffect(() => {
// your logic side-effect
}, [])
React.useEffect(() => {
// your logic, side-effect
@simbathesailor
simbathesailor / getTimeZone.jsx
Created January 15, 2020 07:18
getTimeZone.jsx
function getTimeZoneText(utcString) {
try {
const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
if (Intl) {
const zoneDateObj = utcToZonedTime(utcString, timeZone);
const timeZoneString = formatTimeZone(zoneDateObj, 'zzzz', { timeZone });
return timeZoneString
.split(' ')
.map(elem => {
return elem.slice(0, 1);
@simbathesailor
simbathesailor / useDebouncedEffect.jsx
Last active January 9, 2020 15:53
useDebouncedEffect.jsx
function useDebouncedEffect(
callback,
dependency,
timeout = 2000,
options = { trailing: true, leading: false }
) {
const { leading, trailing } = options;
// the source of truth will be _dependencyRef.current always
const [_dependency, _setdependency] = React.useState(dependency);