Skip to Content

useUncontrolled

Exports Size
loading...
Gzip Size
loading...
Brotli Size
Source Code
View on GitHub
Docs
Edit this page

Track value from uncontrolled input (so React won’t re-renders during user input).

Usage

import { useCallback } from 'react'; import useSWR from 'swr'; import fetcher from '@/lib/fetcher'; import { useUncontrolled } from 'foxact/use-uncontrolled'; const Demo = () => { const [searchQuery, handleCommitSearchQuery, searchInputRef] = useUncontrolled( '', // initial value for searchQuery state (value: string) => value.trim() // optional, transform the input value before committing to searchQuery state ); const { data: searchResults } = useSWR('/api/search?query=' + searchQuery, fetcher); return ( <div> <form onSubmit={useCallback((e) => { e.preventDefault(); handleCommitSearchQuery(); // handleCommitSearchQuery is memoized as usual. }, [handleCommitSearchQuery])}> <input ref={searchInputRef} /> <button type="submit">search</button> </form> {searchResults?.map(item => ( <div key={item.id}>{item.name}</div> )))} </div> ) }