Skip to content

Commit f07612f

Browse files
committed
fix: don't record signatures of local hooks, fixes #1412
1 parent 9ab2571 commit f07612f

File tree

3 files changed

+37
-2483
lines changed

3 files changed

+37
-2483
lines changed

src/fresh/babel.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ export default function (babel) {
211211
key: fnHookCalls.map(call => call.name + '{' + call.key + '}').join('\n'),
212212
customHooks: fnHookCalls
213213
.filter(call => !isBuiltinHook(call.name))
214+
.filter(call => scope.parent.hasBinding(call.name))
214215
.map(call => t.cloneDeep(call.callee)),
215216
};
216217
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import {useState} from "react";
2+
3+
function Component1() {
4+
function useRippleHandler() {}
5+
useRippleHandler();
6+
useRippleHandler();
7+
}
8+
9+
function Component2() {
10+
const useRippleHandler = () => {};
11+
useRippleHandler();
12+
useRippleHandler();
13+
}
14+
15+
function Component3() {
16+
const useRippleHandler = function () {};
17+
useRippleHandler();
18+
useRippleHandler();
19+
}
20+
21+
const useInnerHook = ({useHookFromProps}) => {
22+
const useHookBase = () => useState();
23+
const useHook = () => useState(useHookFromProps(useHookBase()));
24+
useHookFromProps();
25+
{
26+
// sub scope
27+
useHook();
28+
}
29+
};
30+
31+
const OnlyThisOneUsesExternalHook = () => {
32+
useInnerHook();
33+
useState();
34+
};
35+
36+
// check for "return ["

0 commit comments

Comments
 (0)