muerwre.github.io/docs/api/_content/query/SEkBVlx0jP.json
2024-03-06 11:16:30 +00:00

1 line
No EOL
17 KiB
JSON

{"_path":"/frontend/react/detect-hook-deps-changes-with-usewhatschanged","_dir":"react","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Detect Hook Deps Changes With UseWhatsChanged","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"code","props":{"code":"import { useEffect, useRef } from 'react';\n\n/** Pass dictionary of `props` as argument and it will\n * tell you, which one changed after rerender.\n * Use `prefix` to distinguish props of different components.\n */\nexport const useWhatsChanged = (\n props: Record<string, unknown>,\n prefix = '',\n) => {\n const prevProps = useRef(props);\n\n useEffect(() => {\n Object.entries(props).forEach(([key, value]) => {\n if (\n !Object.prototype.hasOwnProperty.call(prevProps.current, key) ||\n prevProps.current[key] !== value\n ) {\n console.log(`${prefix} ${key} has changed`);\n }\n });\n\n prevProps.current = props;\n }, [props, prefix]);\n};\n\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { useEffect, useRef } from 'react';\n\n/** Pass dictionary of `props` as argument and it will\n * tell you, which one changed after rerender.\n * Use `prefix` to distinguish props of different components.\n */\nexport const useWhatsChanged = (\n props: Record<string, unknown>,\n prefix = '',\n) => {\n const prevProps = useRef(props);\n\n useEffect(() => {\n Object.entries(props).forEach(([key, value]) => {\n if (\n !Object.prototype.hasOwnProperty.call(prevProps.current, key) ||\n prevProps.current[key] !== value\n ) {\n console.log(`${prefix} ${key} has changed`);\n }\n });\n\n prevProps.current = props;\n }, [props, prefix]);\n};\n\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"code","props":{"code":"import { useEffect, useRef } from 'react';\n\n/** Pass dictionary of `props` as argument and it will\n * tell you, which one changed after rerender.\n * Use `prefix` to distinguish props of different components.\n */\nexport const useWhatsChanged = (\n props: Record<string, unknown>,\n prefix = '',\n) => {\n const prevProps = useRef(props);\n\n useEffect(() => {\n Object.entries(props).forEach(([key, value]) => {\n if (\n !Object.prototype.hasOwnProperty.call(prevProps.current, key) ||\n prevProps.current[key] !== value\n ) {\n console.log(`${prefix} ${key} has changed`);\n }\n });\n\n prevProps.current = props;\n }, [props, prefix]);\n};\n\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f8dc45"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-eb51e2"},"children":[{"type":"text","value":"useEffect"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-eb51e2"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-f8dc45"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-25d03b"},"children":[{"type":"text","value":"'react'"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b20772"},"children":[{"type":"text","value":"/** Pass dictionary of `props` as argument and it will"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b20772"},"children":[{"type":"text","value":" * tell you, which one changed after rerender."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b20772"},"children":[{"type":"text","value":" * Use `prefix` to distinguish props of different components."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b20772"},"children":[{"type":"text","value":" */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f8dc45"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-725b6b"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-28d131"},"children":[{"type":"text","value":"useWhatsChanged"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f8dc45"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e2a525"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4c55a7"},"children":[{"type":"text","value":"props"}]},{"type":"element","tag":"span","props":{"class":"ct-fcba60"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-e2a525"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c27808"},"children":[{"type":"text","value":"Record"}]},{"type":"element","tag":"span","props":{"class":"ct-e2a525"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-601110"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-e2a525"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-601110"},"children":[{"type":"text","value":"unknown"}]},{"type":"element","tag":"span","props":{"class":"ct-e2a525"},"children":[{"type":"text","value":">,"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eb51e2"},"children":[{"type":"text","value":"prefix"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f8dc45"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-25d03b"},"children":[{"type":"text","value":"''"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-725b6b"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-725b6b"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c2d486"},"children":[{"type":"text","value":"prevProps"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f8dc45"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-28d131"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-eb51e2"},"children":[{"type":"text","value":"props"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-28d131"},"children":[{"type":"text","value":"useEffect"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-725b6b"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e2a525"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-601110"},"children":[{"type":"text","value":"Object"}]},{"type":"element","tag":"span","props":{"class":"ct-e2a525"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-849eb4"},"children":[{"type":"text","value":"entries"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f8dc45"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eb51e2"},"children":[{"type":"text","value":"prevProps"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-eb51e2"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":"["}]},{"type":"element","tag":"span","props":{"class":"ct-eb51e2"},"children":[{"type":"text","value":"key"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":"] "}]},{"type":"element","tag":"span","props":{"class":"ct-f8dc45"},"children":[{"type":"text","value":"!=="}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eb51e2"},"children":[{"type":"text","value":"value"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" ) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eb51e2"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-28d131"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-25d03b"},"children":[{"type":"text","value":"`${"}]},{"type":"element","tag":"span","props":{"class":"ct-eb51e2"},"children":[{"type":"text","value":"prefix"}]},{"type":"element","tag":"span","props":{"class":"ct-25d03b"},"children":[{"type":"text","value":"} ${"}]},{"type":"element","tag":"span","props":{"class":"ct-eb51e2"},"children":[{"type":"text","value":"key"}]},{"type":"element","tag":"span","props":{"class":"ct-25d03b"},"children":[{"type":"text","value":"} has changed`"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eb51e2"},"children":[{"type":"text","value":"prevProps"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-eb51e2"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f8dc45"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eb51e2"},"children":[{"type":"text","value":"props"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":" }, ["}]},{"type":"element","tag":"span","props":{"class":"ct-eb51e2"},"children":[{"type":"text","value":"props"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-eb51e2"},"children":[{"type":"text","value":"prefix"}]},{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":"]);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72d50f"},"children":[{"type":"text","value":"};"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-849eb4{color:#D2A8FF}.ct-c2d486{color:#79C0FF}.ct-601110{color:#79C0FF}.ct-c27808{color:#FFA657}.ct-fcba60{color:#FF7B72}.ct-4c55a7{color:#FFA657}.ct-e2a525{color:#C9D1D9}.ct-28d131{color:#D2A8FF}.ct-725b6b{color:#FF7B72}.ct-b20772{color:#8B949E}.ct-25d03b{color:#A5D6FF}.ct-eb51e2{color:#C9D1D9}.ct-72d50f{color:#C9D1D9}.ct-f8dc45{color:#FF7B72}.light .ct-f8dc45{color:#859900}.light .ct-72d50f{color:#657B83}.light .ct-eb51e2{color:#268BD2}.light .ct-25d03b{color:#2AA198}.light .ct-b20772{color:#93A1A1}.light .ct-725b6b{color:#073642}.light .ct-28d131{color:#268BD2}.light .ct-e2a525{color:#657B83}.light .ct-4c55a7{color:#657B83}.light .ct-fcba60{color:#859900}.light .ct-c27808{color:#268BD2}.light .ct-601110{color:#859900}.light .ct-c2d486{color:#268BD2}.light .ct-849eb4{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Frontend:React:Detect hook deps changes with useWhatsChanged.md","_source":"content","_file":"Frontend/React/Detect hook deps changes with useWhatsChanged.md","_extension":"md"}