Skip to content

Commit 33eedfb

Browse files
author
Alexandra Parker
committed
fix: stabilize the fallback value of useXarrow
Before effects have fired, useXarrow() will return a new reference every render. This can lead to a render loop if updateXarrow is placed in a hook's dependency list. Stabilize it by making the fallback value a module-scope const.
1 parent 197326c commit 33eedfb

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

src/useXarrow.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
import React, { useContext, useLayoutEffect, useState } from 'react';
22
import { XelemContext } from './Xwrapper';
33

4+
const noop = () => {};
5+
46
const useXarrow = () => {
57
const [, setRender] = useState({});
68
const reRender = () => setRender({});
79

810
let updateXarrow = useContext(XelemContext);
9-
if (!updateXarrow) updateXarrow = () => {};
11+
if (!updateXarrow) updateXarrow = noop;
1012
// throw new Error(
1113
// "'Xwrapper' is required around element using 'useXarrow' hook! wrap your xarrows and connected elements with Xwrapper! "
1214
// );

0 commit comments

Comments
 (0)