Skip to content

Commit 8cef9a5

Browse files
authored
Fix useNumberFieldStately dep on aria (#2918)
Fix useNumberFieldStately dep on aria
1 parent 0f255bb commit 8cef9a5

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

packages/@react-stately/numberfield/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
"dependencies": {
2020
"@babel/runtime": "^7.6.2",
2121
"@internationalized/number": "^3.0.5",
22-
"@react-aria/utils": "^3.11.2",
2322
"@react-stately/utils": "^3.4.1",
2423
"@react-types/numberfield": "^3.1.2",
2524
"@react-types/shared": "^3.11.1"

packages/@react-stately/numberfield/src/useNumberFieldState.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import {clamp, snapValueToStep, useControlledState} from '@react-stately/utils';
1414
import {NumberFieldProps} from '@react-types/numberfield';
1515
import {NumberFormatter, NumberParser} from '@internationalized/number';
1616
import {useCallback, useMemo, useRef, useState} from 'react';
17-
import {useLayoutEffect} from '@react-aria/utils';
1817

1918
export interface NumberFieldState {
2019
/**
@@ -105,9 +104,15 @@ export function useNumberFieldState(
105104
// Update the input value when the number value or format options change. This is done
106105
// in a useEffect so that the controlled behavior is correct and we only update the
107106
// textfield after prop changes.
108-
useLayoutEffect(() => {
107+
let prevValue = useRef(numberValue);
108+
let prevLocale = useRef(locale);
109+
let prevFormatOptions = useRef(formatOptions);
110+
if (!Object.is(numberValue, prevValue.current) || locale !== prevLocale.current || formatOptions !== prevFormatOptions.current) {
109111
setInputValue(format(numberValue));
110-
}, [numberValue, locale, formatOptions]);
112+
prevValue.current = numberValue;
113+
prevLocale.current = locale;
114+
prevFormatOptions.current = formatOptions;
115+
}
111116

112117
// Store last parsed value in a ref so it can be used by increment/decrement below
113118
let parsedValue = useMemo(() => numberParser.parse(inputValue), [numberParser, inputValue]);

0 commit comments

Comments
 (0)