Skip to Content
DocsCloud UI HooksuseInputState

useInputState

Handle input state changes for both native and custom inputs.

Import

import { useInputState } from '@tidbcloud/uikit'

Usage

useInputState handles state of native inputs (with event in onChange handler) and custom inputs (with value in onChange handler).

import { useInputState } from '@tidbcloud/uikit' import { TextInput, NumberInput } from '@tidbcloud/uikit' function Demo() { const [stringValue, setStringValue] = useInputState('') const [numberValue, setNumberValue] = useInputState<string | number>(0) return ( <> {/* Native input */} <input type="text" value={stringValue} onChange={setStringValue} /> {/* Mantine TextInput */} <TextInput value={stringValue} onChange={setStringValue} /> {/* Mantine NumberInput (passes value directly) */} <NumberInput value={numberValue} onChange={setNumberValue} /> </> ) }

Comparison with useState

import { useState } from 'react' import { useInputState } from '@tidbcloud/uikit' import { TextInput, NumberInput } from '@tidbcloud/uikit' // With useState - requires different handling function WithUseState() { const [stringValue, setStringValue] = useState('') const [numberValue, setNumberValue] = useState<string | number>(0) return ( <> <input type="text" value={stringValue} onChange={(event) => setStringValue(event.currentTarget.value)} /> <TextInput value={stringValue} onChange={(event) => setStringValue(event.currentTarget.value)} /> <NumberInput value={numberValue} onChange={setNumberValue} /> </> ) } // With useInputState - unified handling function WithUseInputState() { const [stringValue, setStringValue] = useInputState('') const [numberValue, setNumberValue] = useInputState<string | number>(0) return ( <> <input type="text" value={stringValue} onChange={setStringValue} /> <TextInput value={stringValue} onChange={setStringValue} /> <NumberInput value={numberValue} onChange={setNumberValue} /> </> ) }

Definition

type UseInputStateReturnValue<T> = [T, (value: null | undefined | T | React.ChangeEvent<any>) => void] function useInputState<T>(initialState: T): UseInputStateReturnValue<T>
Last updated on