Skip to content

Instantly share code, notes, and snippets.

View tincho's full-sized avatar

Martin tincho

View GitHub Profile
@tincho
tincho / memoizeByProps.js
Last active September 19, 2019 19:55
memoize by props shortcut
const shallowCompare = (obj1, obj2) =>
typeof obj1 === 'object' && typeof obj2 === 'object'
? Object.keys(obj1).length === Object.keys(obj2).length &&
Object.keys(obj1).every(
key => obj2.hasOwnProperty(key) && obj1[key] === obj2[key]
)
: obj1 === obj2
const memoizeByProps = (...props) => Component =>
React.memo(Component, (prevProps, nextProps) =>
@tincho
tincho / loop.js
Created December 23, 2019 19:32
simple vainilla JS util to call a function each N milliseconds
const loop = {
timer: null,
count: 0,
start(fn, time=1000, limit = 100) {
fn(this.stop.bind(this), this.count);
this.count++;
if (this.count < limit) {
this.timer = setTimeout(() => this.start(fn, time, limit), time)
} else {
this.stop()
// @params: N functions that should return an Object
// @returns a fn that will pass all arg to all fns and return an Obj with all outputs merged
const mergeOutputs = (...fns) => (...args) => fns.reduce((out, fn) => ({
...out,
...fn(...args)
}), {})
// takes one arg
const one = (name) => ({ hello: name, world: name })
const combine = (...fns) => (...args) => fns.reduce((returnValues, fn) => [...returnValues, fn(...args)], [])