集成 TextareaAutosize UI 组件

这是一个基于 react-textarea-autosize 构建的自适应高度 textarea 组件,会根据内容自动调整高度,并内置服务端渲染兼容性与平滑过渡效果。

安装

你可以通过 Tiptap CLI 添加该 primitive

npx @tiptap/cli@latest add textarea-autosize

用法

import { TextareaAutosize } from '@/components/tiptap-ui-primitive/textarea-autosize'

export default function MyComponent() {
  const [value, setValue] = React.useState('')

  return (
    <div>
      {/* 基础自适应高度 textarea */}
      <TextareaAutosize
        value={value}
        onChange={(e) => setValue(e.target.value)}
        placeholder="开始输入吧……我会随内容增长!"
      />

      {/* 带有最小和最大行数的 textarea */}
      <TextareaAutosize minRows={3} maxRows={8} placeholder="我最少 3 行,最多 8 行" />

      {/* 自定义尺寸调整行为的 textarea */}
      <TextareaAutosize
        minRows={2}
        maxRows={10}
        cacheMeasurements={true}
        placeholder="我缓存尺寸,更好性能"
      />
    </div>
  )
}

属性

TextareaAutosize

基于 react-textarea-autosize 构建,增加了服务端渲染兼容支持。

名称类型默认值说明
minRowsnumber1最小行数
maxRowsnumberInfinity最大行数
valuestring-受控的内容值
onChange(event: ChangeEvent) => void-内容变化事件回调

依赖

  • react-textarea-autosize:提供自动调整高度功能的底层库
  • use-isomorphic-layout-effect:支持服务端渲染的自定义布局 Effect Hook