2016-10-17 2 views

答えて

0

Reselectセレクタは、セレクタのparamsはが同じであれば、得られた小道具が同じオブジェクトであることを意味memoized、です。あなたが再選択を使用することができたとしても、あなたはAddy Osmani's articleから1のように、メモ化の方法を実装することにより、簡単にセレクタをメモ化することができます

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); 
    }; 
} 

そして、セレクタを作成するためにそれを使用します。

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

私のアプローチでした全く恣意的です、それは理にかなっていますか?それは受け入れられますか? – shnoby

+0

これは非常に標準的な還元です。 –

関連する問題