useAdaptiveTextarea

Tags:

一个 React 钩子 (Hook),用于创建自适应的文本域 (textarea),能够基于其内容自动调整高度。

演示

在文本域中输入内容,然后看文本域的高度如何自动调整。

源码
Textarea height:
0
Resize times:
0

用法

请查看 API。

源码

点击下方链接跳转 GitHub 查看源代码。

API

const { ref, height, resize } = useAdaptiveTextarea(options)

选项 Options

export interface UseAdaptiveTextareaOptions<T extends HTMLElement = HTMLElement> { /** * 触发调整大小的依赖列表 * * @defaultValue [] */ watch?: DependencyList /** * 触发调整大小的事件列表 * * @defaultValue ['input'] */ events?: (keyof HTMLElementEventMap)[] /** * 是否自动调整 `textarea` 元素的高度 * * @defaultValue true */ autoHeight?: boolean /** * 应用高度样式的目标元素 * * @defaultValue undefined */ styleTarget?: ElementTarget<T> /** * 应用高度值的样式属性 * * @defaultValue 'height' */ styleProp?: 'height' | 'minHeight' /** * `textarea` 元素高度变化时调用的回调函数 * * @defaultValue undefined */ onResize?: (height: number, prevHeight: number) => void }

返回值

export interface UseAdaptiveTextareaReturns { /** * 应传递给 `textarea` 元素的 React 引用 */ ref: React.RefObject<HTMLTextAreaElement | null> /** * `textarea` 元素当前的高度 */ height: number /** * 手动调整 `textarea` 元素大小的函数 * * @returns {void} `void` */ resize(): void }