如何防止子选择器在每次父组件带来数据时被更新?
选择器的行为是有意义的,我只是在寻找替代方法,更像更简单的方法,然后使用redux(不允许使用超出redux)。
依据
重选选择器是记忆的,这意味着如果选择器的参数是相同的,那么生成的道具就是相同的对象。即使可以使用reselect,也可以通过实现记忆方法轻松地记住选择器,就像Addy Osmani的文章中的方法:
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)
}));