File tree Expand file tree Collapse file tree 2 files changed +26
-0
lines changed
packages/@react-aria/utils/src Expand file tree Collapse file tree 2 files changed +26
-0
lines changed Original file line number Diff line number Diff line change @@ -34,3 +34,4 @@ export {useValueEffect} from './useValueEffect';
34
34
export { scrollIntoView , scrollIntoViewport } from './scrollIntoView' ;
35
35
export { clamp , snapValueToStep } from '@react-stately/utils' ;
36
36
export { isVirtualClick , isVirtualPointerEvent } from './isVirtualEvent' ;
37
+ export { useEffectEvent } from './useEffectEvent' ;
Original file line number Diff line number Diff line change
1
+ /*
2
+ * Copyright 2023 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+
13
+ import { useCallback , useRef } from 'react' ;
14
+ import { useLayoutEffect } from './useLayoutEffect' ;
15
+
16
+ export function useEffectEvent ( fn ) {
17
+ const ref = useRef ( null ) ;
18
+ useLayoutEffect ( ( ) => {
19
+ ref . current = fn ;
20
+ } , [ fn ] ) ;
21
+ return useCallback ( ( ...args ) => {
22
+ const f = ref . current ;
23
+ return f ( ...args ) ;
24
+ } , [ ] ) ;
25
+ }
You can’t perform that action at this time.
0 commit comments