I hereby claim:
- I am andycarrell on github.
- I am andycarrell (https://keybase.io/andycarrell) on keybase.
- I have a public key ASCiGobDmIpg0aopxQ7f0VOS4D1p5vnDvBus02k6KthChAo
To claim this, I am signing this object:
function useHTMLContainer() { | |
const container = useRef<HTMLDivElement | null>(null); | |
useEffect(() => { | |
const element = document.createElement('div'); | |
document.body.appendChild(element); | |
container.current = element; | |
return () => { | |
if (container.current) { |
/** | |
* @link https://raw.githubusercontent.com/NaturalCycles/js-lib/master/src/promise/pProps.ts | |
* Promise.all for Object instead of Array. | |
* | |
* Inspired by Bluebird Promise.props() and https://github.com/sindresorhus/p-props | |
* | |
* Improvements: | |
* | |
* - Exported as { promiseProps }, so IDE auto-completion works | |
* - Simpler: no support for Map, Mapper, Options |
const { rename, mkdir, rmdir } = require("fs"); | |
const copyfiles = require("copyfiles"); | |
const { promisify } = require("util"); | |
const temporaryDirectory = "./nzpqofqtzj"; | |
const mkdirAsync = promisify(mkdir); | |
const rmdirAsync = promisify(rmdir); | |
const renameAsync = promisify(rename); | |
const copyfilesAsync = promisify(copyfiles); |
import { useCallback, useLayoutEffect, useRef } from "react"; | |
/** | |
* Returns a constant reference to a callback which can be safely added | |
* to dependency arrays without triggering the effect or memoization. | |
* Maintains an up to date copy of the provided function to avoid | |
* referencing stale state/props at calltime. | |
*/ | |
const useEventCallback(fn) { | |
const ref = useRef(fn); |
import { useEffect, useState } from "react"; | |
const useScrollPosition = (callback) => { | |
// copy callback to ref, using useLayoutEffect | |
const callbackRef = useConstantRefCallback(callback); | |
useEffect(() => { | |
let lastKnownScrollPosition = 0; | |
let previousLastKnownScrollPosition = 0; | |
let ticking = false; |
I hereby claim:
To claim this, I am signing this object:
import { useCallback } from "react"; | |
import { useApolloClient } from "@apollo/client"; | |
import { defaultDataIdFromObject } from "@apollo/client/core"; | |
const useApolloCacheEvict = () => { | |
const { cache } = useApolloClient(); | |
/** | |
* Pass entire objects as queried from the cache. | |
* Use Apollo's default function to determine id. |
function useRefGetAndSet(value) { | |
const ref = React.useRef(value); | |
const getRef = React.useCallback(() => ref.current, []); | |
const setRef = React.useCallback((newValue) => { | |
ref.current = newValue; | |
}, []); | |
// Optional: sync value every render | |
useLayoutEffect(() => { |
export async function getStaticProps({ params }) { | |
const { slug } = params; | |
const post = postFor[slug]; | |
if (!post) { | |
return { props: {} }; | |
} | |
const { default: Post, SEO } = await import(`../../posts/${post}`); |
export default function useTimeout() { | |
const ids = useRef([]); | |
React.useEffect(() => { | |
const cleanupTimeouts = () => { | |
ids.current.forEach(clearTimeout); | |
}; | |
return cleanupTimeouts; | |
}, []); |