2016-10-17 9 views

Antwort

0

Reselect Selektoren sind memoized, was bedeutet, dass, wenn die params der Selektor die gleichen sind, die sich ergebenden Stützen dasselbe Objekt sind. Auch wenn Sie neu wählen können, können Sie Ihre Wähler leicht durch eine memoization Verfahren implementiert, wie die von Addy Osmani's article memoized:

function memoize(fn) { 
    return function() { 
     var args = Array.prototype.slice.call(arguments), 
      hash = "", 
      i = args.length; 
     currentArg = null; 
     while (i--) { 
      currentArg = args[i]; 
      hash += (currentArg === Object(currentArg)) ? 
      JSON.stringify(currentArg) : currentArg; 
      fn.memoize || (fn.memoize = {}); 
     } 
     return (hash in fn.memoize) ? fn.memoize[hash] : 
     fn.memoize[hash] = fn.apply(this, args); 
    }; 
} 

und dann verwenden, um die Wähler zu schaffen:

const selector = memoize((state) =>({ 
    alerts: selectors.alerts(state) 
})); 
+0

mein Ansatz war völlig willkürlich, macht es Sinn? Ist das akzeptabel? – shnoby

+0

Dies ist ein sehr Standard-Redux. –

Verwandte Themen