Обе библиотеки возвращают функцию , которая принимает заданное количество аргументов , а возвращает значение :
getA(arg1, arg2, arg3) // Returns a value
Разница заключается в том, что происходит под колпаком при вызове функции .
memoize-one
- собирать при условииаргументы
- сравнивают аргументы с аргументами, предоставленными в предыдущем вызове (
===
) - аргументы равны одинаковы : возвращает кэшированный результат
- аргументы равны НЕ одинаковы : пересмотреть функцию результата и вернуть
повторно выбрать
- собрать предоставленные аргументы
- запустить набор функции
inputSelectors
, предоставив им собранные аргументы - собирать
inputSelectors
возвращаемые значения - сравнить
inputSelectors
возвращаемые значения с полученными в предыдущемвызов (===
) - значения равны одинаковы : вернуть кэшированный результат
- значения являются НЕ одинаковыми : переоценить функцию результата и вернуть
Выводы
memoize-one
- это служебная программа создания заметок на основе значений: памятка выполняется по значению при условии аргументов .
reselect
добавляет поверх него еще один слой оценки: памятка НЕ выполняетсязначения аргументов, НО по результатам набора inputSelectors
функций , снабженных этими начальными аргументами.
Это означает, что reselect
селекторы легко компонуются, поскольку каждый inputSelectors
может быть другим reselect
селектор.