当前位置: 首页 > news >正文

Shadcn Admin Kit表单组件全攻略:TextInput到RichTextInput实战

Shadcn Admin Kit表单组件全攻略:TextInput到RichTextInput实战

【免费下载链接】shadcn-admin-kitComponent kit to build your Admin app with shadcn/ui项目地址: https://gitcode.com/gh_mirrors/sh/shadcn-admin-kit

Shadcn Admin Kit是基于shadcn/ui构建的强大组件套件,提供了从基础文本输入到富文本编辑的完整表单解决方案。本文将带您全面掌握TextInput、RichTextInput等核心表单组件的使用方法,帮助您快速构建专业级管理应用界面。

表单组件基础:SimpleForm容器

所有表单组件都需要在<SimpleForm>容器中使用,它提供了表单布局、验证、提交等核心功能。SimpleForm默认采用每行一个输入组件的布局,并在底部显示取消和保存按钮。

基本用法示例:

import { Edit, SimpleForm, TextInput, BooleanInput } from '@/components/admin'; export const ProductEdit = () => ( <Edit> <SimpleForm> <TextInput source="name" /> <BooleanInput source="available" /> </SimpleForm> </Edit> );

SimpleForm支持自定义验证、默认值和工具栏,满足各种复杂表单需求。详细文档请参考SimpleForm.md。

基础文本输入:TextInput组件

单行长文本输入

<TextInput>是最常用的表单组件,用于接收单行文本输入。它包装了Shadcn的<Input>组件,提供了表单绑定、验证等增强功能。

基本用法:

import { TextInput } from '@/components/admin'; <TextInput source="title" />

多行文本输入

通过设置multiline属性,TextInput可以转换为文本区域(textarea):

<TextInput source="description" multiline rows={4} />

核心属性

属性类型描述
sourcestring字段名称(必填)
multilineboolean是否使用多行文本框
labelstring | false自定义标签或隐藏标签
disabledboolean是否禁用输入
validateValidator | Validator[]验证规则

⚠️ 注意:不要使用type="number",这会导致值以字符串形式返回。应使用专门的NumberInput组件处理数字输入。

高级富文本编辑:RichTextInput组件

对于需要格式化文本的场景,Shadcn Admin Kit提供了功能强大的<RichTextInput>组件,基于TipTap编辑器实现,支持富文本编辑并以HTML格式存储内容。

安装

RichTextInput是可选组件,默认不包含在admin注册表中,需要单独安装:

npx shadcn@latest add https://marmelab.com/shadcn-admin-kit/r/rich-text-input.json

基本用法

import { Edit, SimpleForm } from '@/components/admin'; import { RichTextInput } from '@/components/rich-text-input'; const PostEdit = () => ( <Edit> <SimpleForm> <RichTextInput source="body" /> </SimpleForm> </Edit> );

自定义工具栏

默认工具栏包含丰富的格式化选项:撤销/重做、粗体/斜体/下划线、标题、文本颜色、列表、引用、链接和图片操作等。您也可以自定义工具栏:

import { RichTextInput, RichTextInputToolbar } from '@/components/rich-text-input'; import { Button } from '@/components/ui/button'; <RichTextInput source="body" toolbar={ <RichTextInputToolbar> <Button type="button" onClick={() => editor.chain().focus().toggleBold().run()}> 粗体 </Button> {/* 其他自定义按钮 */} </RichTextInputToolbar> } />

性能优化

RichTextInput依赖TipTap和ProseMirror库,会增加JavaScript包体积。对于不常用该组件的页面,建议使用懒加载:

const RichTextInput = React.lazy(() => import('@/components/rich-text-input').then((module) => ({ default: module.RichTextInput, })), );

实用表单组件推荐

除了TextInput和RichTextInput,Shadcn Admin Kit还提供了多种实用表单组件:

数组输入:ArrayInput

用于输入数组类型的数据,如标签列表、多值选择等。

用法示例:

import { ArrayInput, SimpleFormIterator, TextInput } from '@/components/admin'; <ArrayInput source="tags"> <SimpleFormIterator> <TextInput source="." /> </SimpleFormIterator> </ArrayInput>

自动完成输入:AutocompleteInput

提供搜索建议功能的高级输入组件,适合从大量选项中选择。

日期时间选择:DateTimeInput

用于选择日期和时间的专用组件,提供直观的日历界面。

表单验证最佳实践

Shadcn Admin Kit集成了react-hook-form,支持多种验证方式:

输入级验证

在Input组件上直接定义验证规则:

import { required, email, minLength } from 'ra-core'; <TextInput source="email" validate={[required(), email()]} /> <TextInput source="password" validate={[required(), minLength(8)]} />

表单级验证

在SimpleForm上定义整体验证规则:

const validateUser = (values) => { const errors = {}; if (!values.firstName) errors.firstName = '名字不能为空'; if (values.password !== values.confirmPassword) { errors.confirmPassword = '两次密码不一致'; } return errors; }; <SimpleForm validate={validateUser}> {/* 表单字段 */} </SimpleForm>

总结

Shadcn Admin Kit提供了从基础到高级的完整表单解决方案,TextInput满足日常文本输入需求,RichTextInput则处理复杂的富文本编辑场景。配合SimpleForm容器和其他专用输入组件,您可以轻松构建出功能完善、用户体验出色的管理应用表单界面。

所有组件都遵循shadcn/ui的设计理念,确保视觉一致性和交互体验。通过合理使用这些表单组件,您可以显著提高管理应用的开发效率和质量。

要开始使用Shadcn Admin Kit,只需克隆仓库并按照文档进行安装:

git clone https://gitcode.com/gh_mirrors/sh/shadcn-admin-kit

更多组件详情和高级用法,请参考项目文档。

【免费下载链接】shadcn-admin-kitComponent kit to build your Admin app with shadcn/ui项目地址: https://gitcode.com/gh_mirrors/sh/shadcn-admin-kit

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/1263096/

相关文章:

  • WorkBuddy + 好提示词 = 生产力。43 个场景,复制就能用
  • AI 双向赋能网络安全:攻防演化、风险短板与全域智能防御体系构建
  • AI Agent评估体系设计与实践:从原理到落地
  • 贵阳黄金回收去哪更放心?看重无损不毁首饰的本地门店测评 - 每日生活报
  • 分享: 如何利用workbuddy来构建批量自动化任务.
  • MySQL从入门到精通:30天构建索引优化与SQL性能调优实战体系
  • Semantic Kernel Kernel Memory 入门系列 ❤️‍
  • 如何3分钟快速安装GitHub中文插件:让GitHub说中文的完整实战指南
  • 【CTF-MISC-dmp】使用WinDbg分析Windows蓝屏崩溃转储文件dmp
  • 深度解析UE编译MSB3073错误:构建后事件失败的原因与解决方案
  • G-Helper终极指南:免费开源工具彻底释放华硕笔记本性能潜力
  • PHP+MySQL员工管理系统:从零部署到功能扩展的完整实践指南
  • 中国战略咨询公司前三推荐,撬动战略咨询实力上榜
  • Tiktokenizer:重新定义AI成本控制的认知边界,从黑盒估算到精确预测的技术革命
  • SpringBoot+Vue3+DeepSeek构建健身管理系统:从零到一的全栈实战
  • 微软文字转语音免费和付费怎么选 - 2026实测整理给你靠谱参考
  • 在openEuler 22.03 LTS SP1上使用docker搭建kubeedge
  • AI工具助力学术写作:从文献检索到论文降重全攻略
  • 2026年湘潭地道湘菜私房宴哪家好:5家本地优质湘菜馆选择指南 - 海棠依旧大
  • 北京黄金回收哪家无套路?2026 变现防坑指南,一文看懂正规回收流程 - 奢侈品回收实体店
  • 【CarbonData】CarbonData 的文件格式(`.carbondata`)内部结构是怎样的?包含哪些关键部分?
  • 三步轻松下载网页视频:猫抓浏览器插件的免费资源嗅探方案
  • SnapCameraPreservation:让已下线的Snap Camera重获新生的终极解决方案
  • 终极指南:如何用ROS2控制Unitree GO2机器人(完整实战教程)
  • 《大话文渊慧典》:四
  • AM62L调试子系统:CTF_CFG与ROM表寄存器深度解析与实战
  • AI Agent能力扩展:从函数调用到多步骤协作规划
  • 2026老卫生间不想大规模砸砖,南京微创防水补漏 - 伶鹿到家
  • MySQL实战进阶:从安装配置到性能优化的系统化学习路径
  • 高校注册场景钓鱼风险防控与学生 IAM 韧性体系构建 —— 基于巴塞罗那大学安全注册公告实证