Skip to content

Commit 9b3cde9

Browse files
author
Brian Vaughn
authored
Fix DevTools v4.1 editable hook regression (#16867)
* Fixed a regression in hooks editor from a recent EditableValue change * Fixed a reset/state bug in useEditableValue() hook and removed unnecessary useMemo()
1 parent 1a6294d commit 9b3cde9

File tree

4 files changed

+19
-29
lines changed

4 files changed

+19
-29
lines changed

packages/react-devtools-shared/src/devtools/views/Components/EditableValue.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,13 @@ type OverrideValueFn = (path: Array<string | number>, value: any) => void;
1717

1818
type EditableValueProps = {|
1919
className?: string,
20-
dataType: string,
2120
initialValue: any,
2221
overrideValueFn: OverrideValueFn,
2322
path: Array<string | number>,
2423
|};
2524

2625
export default function EditableValue({
2726
className = '',
28-
dataType,
2927
initialValue,
3028
overrideValueFn,
3129
path,

packages/react-devtools-shared/src/devtools/views/Components/HooksTree.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,10 +270,9 @@ function HookView({canEditHooks, hook, id, inspectPath, path}: HookViewProps) {
270270
</span>
271271
{typeof overrideValueFn === 'function' ? (
272272
<EditableValue
273-
dataType={type}
273+
initialValue={value}
274274
overrideValueFn={overrideValueFn}
275275
path={[]}
276-
value={value}
277276
/>
278277
) : (
279278
// $FlowFixMe Cannot create span element because in property children

packages/react-devtools-shared/src/devtools/views/Components/KeyValue.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,9 @@ export default function KeyValue({
102102
</span>
103103
{isEditable ? (
104104
<EditableValue
105-
dataType={dataType}
105+
initialValue={value}
106106
overrideValueFn={((overrideValueFn: any): OverrideValueFn)}
107107
path={path}
108-
initialValue={value}
109108
/>
110109
) : (
111110
<span className={styles.Value}>{displayValue}</span>

packages/react-devtools-shared/src/devtools/views/hooks.js

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,7 @@
88
*/
99

1010
import throttle from 'lodash.throttle';
11-
import {
12-
useCallback,
13-
useEffect,
14-
useLayoutEffect,
15-
useMemo,
16-
useState,
17-
} from 'react';
11+
import {useCallback, useEffect, useLayoutEffect, useState} from 'react';
1812
import {unstable_batchedUpdates as batchedUpdates} from 'react-dom';
1913
import {
2014
localStorageGetItem,
@@ -42,11 +36,14 @@ export function useEditableValue(
4236
const [parsedValue, setParsedValue] = useState(initialValue);
4337
const [isValid, setIsValid] = useState(initialIsValid);
4438

45-
const reset = useCallback(() => {
46-
setEditableValue(smartStringify(initialValue));
47-
setParsedValue(initialValue);
48-
setIsValid(initialIsValid);
49-
}, []);
39+
const reset = useCallback(
40+
() => {
41+
setEditableValue(smartStringify(initialValue));
42+
setParsedValue(initialValue);
43+
setIsValid(initialIsValid);
44+
},
45+
[initialValue, initialIsValid],
46+
);
5047

5148
const update = useCallback(newValue => {
5249
let isNewValueValid = false;
@@ -65,17 +62,14 @@ export function useEditableValue(
6562
});
6663
}, []);
6764

68-
return useMemo(
69-
() => ({
70-
editableValue,
71-
hasPendingChanges: smartStringify(initialValue) !== editableValue,
72-
isValid,
73-
parsedValue,
74-
reset,
75-
update,
76-
}),
77-
[editableValue, initialValue, isValid, parsedValue],
78-
);
65+
return {
66+
editableValue,
67+
hasPendingChanges: smartStringify(initialValue) !== editableValue,
68+
isValid,
69+
parsedValue,
70+
reset,
71+
update,
72+
};
7973
}
8074

8175
export function useIsOverflowing(

0 commit comments

Comments
 (0)