From dea39d49ee458763a93f09d5b8320ef2dad8026a Mon Sep 17 00:00:00 2001 From: Julian Grinblat Date: Thu, 21 May 2020 04:26:44 +0900 Subject: [PATCH] Memoize default run scroll --- package-lock.json | 5 +++++ package.json | 1 + src/index.js | 5 ++++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index bbe93f03..f4c3fa7b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6401,6 +6401,11 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, + "memoize-one": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz", + "integrity": "sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA==" + }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", diff --git a/package.json b/package.json index a7687bb1..dab59769 100644 --- a/package.json +++ b/package.json @@ -73,6 +73,7 @@ "react": ">=16.8.0" }, "dependencies": { + "memoize-one": "^5.1.1", "tiny-invariant": "^1.1.0" } } diff --git a/src/index.js b/src/index.js index d3d36c67..865714c3 100644 --- a/src/index.js +++ b/src/index.js @@ -2,14 +2,17 @@ import { useEffect, useLayoutEffect, useRef, useCallback, } from 'react'; import invariant from 'tiny-invariant'; +import memoize from 'memoize-one'; import { maxScrollTop } from './util'; +// eslint-disable-next-line no-param-reassign +const defaultRunScroll = memoize((domRef) => (offset) => { domRef.current.scrollTop = offset; }); const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect; export default (domRef, { initialScroll = null, inaccuracy = 0, - runScroll = (offset) => { domRef.current.scrollTop = offset; }, // eslint-disable-line no-param-reassign + runScroll = defaultRunScroll(domRef), } = {}) => { const wasScrolled = useRef(null);