Skip to content

Commit 342bbfa

Browse files
committed
feat(input-value): make useInputValue more compatible
1 parent 28197d1 commit 342bbfa

2 files changed

Lines changed: 13 additions & 6 deletions

File tree

packages/input-value/src/__tests__/index.test.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,9 @@ test('change value via onChange', () => {
2424
act(() => result.current.onChange({target: {value: newValue}}));
2525
expect(result.current.value).toBe(newValue);
2626
});
27+
28+
test('target not in change value', () => {
29+
const {result} = renderHook(() => useInputValue());
30+
act(() => result.current.onChange('foo'));
31+
expect(result.current.value).toBe('foo');
32+
});

packages/input-value/src/index.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
import {useState, useCallback} from 'react';
22

3-
interface ChangeEvent {
4-
target: {value: string};
5-
}
6-
73
export interface InputValueState {
84
value: string;
9-
onChange(e: ChangeEvent): void;
5+
onChange(e: any): void;
106
}
117

128
export function useInputValue(initialValue: string = ''): InputValueState {
139
const [value, setValue] = useState(initialValue);
1410
const onChange = useCallback(
15-
(e: ChangeEvent) => setValue(e.target.value),
11+
(event: any) => {
12+
const v = event && event.target && 'value' in event.target
13+
? (event.target as HTMLInputElement).value
14+
: event;
15+
setValue(v);
16+
},
1617
[]
1718
);
1819
return {value, onChange};

0 commit comments

Comments
 (0)