diff --git a/package.json b/package.json index 061c8a67..d79f87e5 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "url": "https://github.com/alex-cory/use-http.git" }, "dependencies": { + "dequal": "^1.0.0", "urs": "^0.0.7", "use-ssr": "^1.0.22", "utility-types": "^3.10.0" @@ -56,7 +57,7 @@ "scripts": { "prepublishOnly": "yarn build:production && yarn build:production:esm # runs before publish", "build": "rm -rf dist/cjs && tsc --module CommonJS --outDir dist/cjs", - "build:esm": "rm -rf dist/esm && tsc", + "build:esm": "rm -rf dist/esm && tsc", "build:production": "yarn build -p tsconfig.production.json", "build:production:esm": "yarn build:esm -p tsconfig.production.json", "build:watch": "rm -rf dist && tsc -w --module CommonJS", @@ -122,4 +123,4 @@ "useGraphQL", "use-graphql" ] -} +} \ No newline at end of file diff --git a/src/utils.ts b/src/utils.ts index d8e628a6..d3eac304 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -2,6 +2,7 @@ import { useMemo, useEffect, MutableRefObject, useRef, useCallback, DependencyLi import useSSR from 'use-ssr' import { RequestInitJSON, Options, Res, HTTPMethod, ResponseType } from './types' import { FunctionKeys, NonFunctionKeys } from 'utility-types' +import deepEqual from 'dequal' /** * Used for error checking. If the condition is false, throw an error @@ -232,7 +233,7 @@ export const serializeResponse = async (response: Response) => { function useDeepCompareMemoize(value: DependencyList) { const ref = useRef() - if (JSON.stringify(value) !== JSON.stringify(ref.current)) ref.current = value + if (!deepEqual(value, ref.current)) ref.current = value return ref.current as DependencyList } diff --git a/yarn.lock b/yarn.lock index edea9f4c..97d29b23 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1337,6 +1337,11 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= +dequal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-1.0.0.tgz#41c6065e70de738541c82cdbedea5292277a017e" + integrity sha512-/Nd1EQbQbI9UbSHrMiKZjFLrXSnU328iQdZKPQf78XQI6C+gutkFUeoHpG5J08Ioa6HeRbRNFpSIclh1xyG0mw== + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -4561,10 +4566,10 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -urs@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/urs/-/urs-0.0.4.tgz#d559d660f2a468e0bb116e0b7b505af57cb59ae4" - integrity sha512-+QflFOKa9DmjWclPB2audGCV83uWUnTXHOxLPQyu7XXcaY9yQ4+Tb3UEm8m4N7abJ0kJUCUAQBpFlq6mx80j9g== +urs@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/urs/-/urs-0.0.7.tgz#2dbf320a68a54bbd67ab9c5ac103b0f2227ca6be" + integrity sha512-NDwuby5BP7D60RjHlow8Gch4yfglLdCpZagGeVDZNcL+jsA2v6RcBhPTJraqq1oQ1U3LT1bQfgmwgNUUIFht+g== use-ssr@^1.0.22: version "1.0.22"