Skip to content

Instantly share code, notes, and snippets.

View mistryakshar54's full-sized avatar
🎯
Focusing

Akshar Mistry mistryakshar54

🎯
Focusing
View GitHub Profile
@mistryakshar54
mistryakshar54 / DebounceAndThrottle.js
Created June 20, 2021 16:49
DebounceAndThrottle.js
import "./styles.css";
import React, { useCallback, useState } from "react";
import pokemonData from "./mockData.json";
import { useDebounce } from "./useDebounce";
import { useThrottle } from "./useThrottle";
export default function App() {
const [autocompleteInput, setAutocompleteInput] = useState("");
const [pokemonArr, setPokemonArr] = useState([]);
@mistryakshar54
mistryakshar54 / useThrottleHook.js
Created June 20, 2021 16:42
useThrottleHook.js
import { useState } from "react";
export const useThrottle = (fn, timer = 1000) => {
const [timeoutId, setTimeoutId] = useState(null);
return (...args) => {
if (timeoutId) {
return;
}
setTimeoutId(
setTimeout(() => {
@mistryakshar54
mistryakshar54 / useDebounce.js
Created June 20, 2021 16:22
UseDebounce.js hook
import { useState } from "react";
export const useDebounce = (fn, timer = 1000) => {
const [timeoutId, setTimeoutId] = useState(null);
return (...args) => {
if (timeoutId) {
clearTimeout(timeoutId);
setTimeoutId(null);
}
setTimeoutId(
@mistryakshar54
mistryakshar54 / medium-react-debouncing-autocomplete-w-customdebounce-app.js
Last active June 20, 2021 15:51
medium-react-debouncing-autocomplete-w-customdebounce-app.js
import "./styles.css";
import React, { useCallback, useState } from "react";
import pokemonData from "./mockData.json";
const customDebounce = (fn, timer = 1000) => {
let timeOutValue = null;
return (...args) => {
if (timeOutValue) {
clearTimeout(timeOutValue);
}
@mistryakshar54
mistryakshar54 / style.css
Created June 20, 2021 12:59
medium-react-debouncing-style.css
.App {
font-family: sans-serif;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
margin-top: 10px;
}
.autocompleteInput {
@mistryakshar54
mistryakshar54 / mockData.json
Created June 20, 2021 12:57
Mock pokemon data for react debouncing medium blog
[
"bulbasaur",
"ivysaur",
"venusaur",
"charmander",
"charmeleon",
"charizard",
"squirtle",
"wartortle",
"blastoise",
@mistryakshar54
mistryakshar54 / medium-react-debouncing-autocomplete-app.js
Last active June 20, 2021 17:03
medium-react-debouncing-autocomplete-app.js
import "./styles.css";
import React, { useCallback, useState } from "react";
import pokemonData from "./mockData.json";
export default function App() {
const [autocompleteInput, setAutocompleteInput] = useState("");
const [pokemonArr, setPokemonArr] = useState([]);
const filterPokemons = (keyword) => {
console.log("filter pokemon");
it('returns 200 on successfull signout', async(done)=>{
request(app)
.post('/api/users/auth/signout')
.send({})
.expect(200)
.end((err, res) => {
if (err) {
return done(err);
}
expect(res.body.message).toBe('success');
it('disallows duplicate emails', async(done)=>{
await request(app)
.post('/api/users/auth/signup')
.send({
email : 'test@test.com',
password: 'password'
})
.expect(201);
request(app)
.post('/api/users/auth/signup')
it('check if cookies are set in successful signup response', async()=>{
const resp = await request(app)
.post('/api/users/auth/signup')
.send({
email : 'test@test.com',
password: 'password'
});
expect( resp.get('Set-Cookie') ).toBeDefined();
});