Skip to content

Instantly share code, notes, and snippets.

View hyber1z0r's full-sized avatar

Jakob Gaard Andersen hyber1z0r

View GitHub Profile
@hyber1z0r
hyber1z0r / useDebounce.ts
Last active September 9, 2020 21:32
useDebounce implementation
import { useState, useEffect } from 'react';
const useDebounce = <T>(value: T, delay: number): T => {
const [debouncedValue, setDebouncedValue] = useState(value);
useEffect(() => {
const handler = setTimeout(() => {
setDebouncedValue(value);
}, delay);
let completedAll = true;
for (let i = 0; i < todos.length; i++) {
if (!todos[i].completed) {
completedAll = false;
break;
}
}
const completedAll = todos.every((todo) => todo.completed);
console.log(completedAll); // false
const todo = todos.find((todo) => todo.id === 1);
let todo: Todo | undefined;
for (let i = 0; i < todos.length; i++) {
if (todos[i].id === 1) {
todo = todos[i];
break; // Remember to break so we don't keep iterating after we found it
}
}
import React from 'react';
type Todo = {
id: number;
title: string;
completed: boolean;
}
type Props = {
todo: Todo;
type Todo = {
id: number;
title: string;
completed: boolean;
}
const todos: Todo[] = [
{ id: 1, title: 'Buy nachos', completed: false },
{ id: 2, title: 'Buy avocado', completed: true },
{ id: 3, title: 'Buy ground beef', completed: false },
type Todo = {
id: number;
title: string;
completed: boolean;
}
const todos: Todo[] = [
{ id: 1, title: 'Buy nachos', completed: false },
{ id: 2, title: 'Buy avocado', completed: true },
{ id: 3, title: 'Buy ground beef', completed: false },
@hyber1z0r
hyber1z0r / useInterval.ts
Last active August 10, 2020 19:41
useInterval hook
import React, { useEffect, useRef } from 'react';
const useInterval = (callback: () => void, delay: number | null) => {
const savedCallback = useRef(callback);
useEffect(() => {
savedCallback.current = callback;
}, [callback]);
useEffect(() => {
@hyber1z0r
hyber1z0r / useTimeout.ts
Last active August 10, 2020 19:39
useTimeout hook
import React, { useEffect, useRef } from 'react';
const useTimeout = (callback: () => void, delay: number | null) => {
const savedCallback = useRef(callback);
useEffect(() => {
savedCallback.current = callback;
}, [callback]);
useEffect(() => {