Skip to content

Instantly share code, notes, and snippets.

@atticoos
Created July 13, 2017 17:51
Show Gist options
  • Save atticoos/1f7b3fe1cc8f4eadfa580e9593d56537 to your computer and use it in GitHub Desktop.
Save atticoos/1f7b3fe1cc8f4eadfa580e9593d56537 to your computer and use it in GitHub Desktop.
'use strict';
import * as Reselect from 'reselect';
export function createSelector (...args) {
const selector = Reselect.createSelector(...args);
var debug = false;
var debugLabel = null;
function debuggableSelector (...selectorArgs) {
if (!__DEV__ || !debug) {
return selector(...selectorArgs);
}
const out = selector(...selectorArgs);
console.groupCollapsed(
'Selector' + (debugLabel ? ` - ${debugLabel}` : '')
);
console.info(out);
console.groupEnd();
return out;
}
debuggableSelector.debug = (label) => {
debug = true;
debugLabel = label;
return debuggableSelector;
};
return debuggableSelector;
}
@atticoos
Copy link
Author

atticoos commented Jul 13, 2017

Before:

import {createSelector} from 'reselect';

const selector = createSelector(
  depA,
  depB,
  // (a, b) => doSomethignWith(a, b) // have to comment out to log it
  (a, b) => {
    var out = doSomethingWith(a, b)
    console.log('TESTING', out)
    return out
  }
)

After:

import {createSelector} from '@utils/selectors';

const selector = createSelector(
  depA,
  depB,
  (a, b) => doSomethingWith(a, b)
).debug('TESTING') // remove when done

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment