import React, { useState, useCallback } from 'react'; type SupportedElements = HTMLInputElement | HTMLSelectElement; export default function (state: string = ''): [string, React.ChangeEventHandler, (value: string) => void] { const [value, setValue] = useState(state); const onChange = useCallback( ({ target: { value } }: React.ChangeEvent) => setValue(value), [], ); return [value, onChange, setValue]; }