Skip to content

Commit cc238b6

Browse files
authored
Fix controlled numberfield blur shows old value quickly (#2882)
1 parent 5f83e9f commit cc238b6

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@
1818
},
1919
"dependencies": {
2020
"@babel/runtime": "^7.6.2",
21+
"@internationalized/number": "^3.0.5",
22+
"@react-aria/utils": "^3.11.2",
2123
"@react-stately/utils": "^3.4.1",
2224
"@react-types/numberfield": "^3.1.2",
23-
"@react-types/shared": "^3.11.1",
24-
"@internationalized/number": "^3.0.5"
25+
"@react-types/shared": "^3.11.1"
2526
},
2627
"peerDependencies": {
2728
"react": "^16.8.0 || ^17.0.0-rc.1"

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

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

1819
export interface NumberFieldState {
1920
/**
@@ -104,7 +105,7 @@ export function useNumberFieldState(
104105
// Update the input value when the number value or format options change. This is done
105106
// in a useEffect so that the controlled behavior is correct and we only update the
106107
// textfield after prop changes.
107-
useEffect(() => {
108+
useLayoutEffect(() => {
108109
setInputValue(format(numberValue));
109110
}, [numberValue, locale, formatOptions]);
110111

0 commit comments

Comments
 (0)