防止在redux中触发子组件的选择器



如何防止子选择器在每次父组件带来数据时被更新?

选择器的行为是有意义的,我只是在寻找替代方法,更像更简单的方法,然后使用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) 
}));

相关内容

  • 没有找到相关文章

最新更新