Form
我们的 Form 组件提供了出色的用户体验,可以从用户那里收集一些数据并提交以满足扩展需求。

两种类型:受控与不受控
React 中的项可以是以下两种类型之一:受控或不受控。
不受控的项是两者中较简单的一个。它最接近纯 HTML 输入。 React 将其放在页面上,Raycast 跟踪其余部分。不受控的输入需要更少的代码,但会使执行某些操作变得更加困难。
对于受控,您可以明确控制该项显示的 value 。您必须编写代码来通过定义 onChange 回调来响应更改,将当前值存储在某处,并将该值传递回要显示的项。这是你的代码中的一种回馈循环。想连接起来这些需要更多的工作,不过它们提供了够多的可控性。
您可以在每个支持的项下查看下面这两种样式。
校验
在提交数据之前,确保以正确的格式填写所有必需的表单控件非常重要。
在 Raycast 中,可以通过 API 完全控制验证。为了保持与本机相同的行为,正确的使用方法是验证 onBlur 回调中的值,更新条目的错误并使用 onChange 回调跟踪更新从而删除错误的值。

例子
草稿
草稿是一种在最终用户退出命令时保留已填写的输入(但尚未提交)的机制。要启用此机制,请在表单上设置 enableDrafts 属性,并使用顶级属性 draftValues 填充表单的初始值。

例子
API 参数
Form
显示表单项的列表,例如 Form.TextField, Form.Checkbox 或 Form.Dropdown.
参数
children
表单的 Form.Item 元素。
React.ReactNode
-
enableDrafts
当用户退出屏幕时是否保留 Form.Items 值。
boolean
false
isLoading
是否应在搜索栏下方显示或隐藏 loading 栏
boolean
false
navigationTitle
Raycast 中显示的该视图的主标题
string
Command title
Form.TextField
带有用于输入的文本字段的表单项。

例子
参数
id*
表单项的 ID。确保为每个表单项分配一个唯一的 ID。
string
-
autoFocus
表单渲染后项是否应自动获得焦点。
boolean
-
defaultValue
项的默认值。请记住,defaultValue 将在每个组件生命周期配置一次。这意味着如果用户更改该值,则重新渲染时不会配置 defaultValue。
string
-
error
显示表单项验证问题的可选错误消息。如果存在 error ,表单项将以红色边框突出显示,并在右侧显示错误消息。
string
-
info
用于描述表单项的可选信息消息。它显示在条目的右侧,并带有一个信息图标。当图标悬停时,将显示信息消息。
string
-
placeholder
文本字段中显示的占位符文本。
string
-
storeValue
提交后是否应保留项的值,并在下次渲染表单时恢复。
boolean
-
title
显示在项的左侧标题。
string
-
value
当前项的值
string
-
onBlur
当项失去焦点时将触发的回调。
(event: FormEvent<string>) => void
-
onChange
当项的 value 发生变化时会触发的回调。
(newValue: string) => void
-
onFocus
当项获得焦点时,应该调用将触发的回调。
(event: FormEvent<string>) => void
-
方法(命令式 API)
focus
() => void
聚焦某项
reset
() => void
将表单项重置为其初始值,或 defaultValue(如果指定)。
Form.PasswordField
具有用于输入密码的安全文本字段的表单项,其中输入的字符必须保密。

例子
参数
id*
表单项的 ID。确保为每个表单项分配一个唯一的 ID。
string
-
autoFocus
表单渲染后项是否应自动获得焦点。
boolean
-
defaultValue
条目的默认值。请记住,defaultValue 将在每个组件生命周期配置一次。这意味着如果用户更改该值,则重新渲染时不会配置 defaultValue。
string
-
error
显示表单项验证问题的可选错误消息。如果存在错误,表单项将以红色边框突出显示,并在右侧显示错误消息。
string
-
info
用于描述表单项的可选信息消息。它显示在项的右侧,并带有一个信息图标。当图标悬停时,将显示信息消息。
string
-
placeholder
密码字段中显示的占位符文本。
string
-
storeValue
提交后是否应保留项的值,并在下次渲染表单时恢复。
boolean
-
title
显示在项的左侧标题。
string
-
value
当前项的值
string
-
onBlur
当项失去焦点时将触发的回调。
(event: FormEvent<string>) => void
-
onChange
当项的值发生变化时会触发的回调。
(newValue: string) => void
-
onFocus
当项获得焦点时,应该调用将触发的回调。
(event: FormEvent<string>) => void
-
方法(命令式 API)
focus
() => void
聚焦该项。
reset
() => void
将表单项重置为其初始值,或 defaultValue(如果指定)。
Form.TextArea
带有用于输入的文本区域的表单项。该项支持多行文本输入。

例子
参数
id*
表单项的 ID。确保为每个表单项分配一个唯一的 ID。
string
-
autoFocus
表单渲染后项是否应自动获得焦点。
boolean
-
defaultValue
条目的默认值。请记住,defaultValue 将在每个组件生命周期配置一次。这意味着如果用户更改该值,则重新渲染时不会配置 defaultValue。
string
-
enableMarkdown
Markdown 是否会在 TextArea 中突出显示。启用后,Markdown 快捷方式开始对 TextArea 起作用(按 ⌘ + B 将在所选文本周围添加 粗体,⌘ + I 将使所选文本变为斜体等)
boolean
false
error
显示表单项验证问题的可选错误消息。如果存在错误,表单项将以红色边框突出显示,并在右侧显示错误消息。
string
-
info
用于描述表单项的可选信息消息。它显示在项的右侧,并带有一个信息图标。当图标悬停时,将显示信息消息。
string
-
placeholder
文本区域中显示的占位符文本。
string
-
storeValue
提交后是否应保留项的值,并在下次渲染表单时恢复。
boolean
-
title
显示在项的左侧标题。
string
-
value
当前项的值
string
-
onBlur
当项失去焦点时将触发的回调。
(event: FormEvent<string>) => void
-
onChange
当项的 value 发生变化时会触发的回调。
(newValue: string) => void
-
onFocus
当项获得焦点时,应该调用将触发的回调。
(event: FormEvent<string>) => void
-
方法(命令式 API)
focus
() => void
聚焦某项
reset
() => void
将表单项重置为其初始值,或 defaultValue(如果指定)。
Form.Checkbox
带有复选框的表单项。

例子
参数
id*
表单项的 ID。确保为每个表单项分配一个唯一的 ID。
string
-
label*
显示在复选框右侧的标签。
string
-
autoFocus
表单渲染后项是否应自动获得焦点。
boolean
-
defaultValue
条目的默认值。请记住,defaultValue 将在每个组件生命周期配置一次。这意味着如果用户更改该值,则重新渲染时不会配置 defaultValue。
boolean
-
error
显示表单项验证问题的可选错误消息。如果存在错误,表单项将以红色边框突出显示,并在右侧显示错误消息。
string
-
info
用于描述表单项的可选信息消息。它显示在项的右侧,并带有一个信息图标。当图标悬停时,将显示信息消息。
string
-
storeValue
提交后是否应保留项的值,并在下次渲染表单时恢复。
boolean
-
title
显示在项的左侧标题。
string
-
value
当前项的值
boolean
-
onBlur
当项失去焦点时将触发的回调。
(event: FormEvent<boolean>) => void
-
onChange
当项的 value 发生变化时会触发的回调。
(newValue: boolean) => void
-
onFocus
当项获得焦点时,应该调用将触发的回调。
(event: FormEvent<boolean>) => void
-
方法(命令式 API)
focus
() => void
聚焦某项
reset
() => void
将表单项重置为其初始值,或 defaultValue(如果指定)。
Form.DatePicker
带有日期选择器的表单项。

例子
Props
id*
表单项的 ID。确保为每个表单项分配一个唯一的 ID。
string
-
autoFocus
表单渲染后项是否应自动获得焦点。
boolean
-
defaultValue
条目的默认值。请记住,defaultValue 将在每个组件生命周期配置一次。这意味着如果用户更改该值,则重新渲染时不会配置 defaultValue。
Date
-
error
显示表单项验证问题的可选错误消息。如果存在错误,表单项将以红色边框突出显示,并在右侧显示错误消息。
string
-
info
用于描述表单项的可选信息消息。它显示在项的右侧,并带有一个信息图标。当图标悬停时,将显示信息消息。
string
-
max
允许选择的最长日期(含)。
Date
-
min
允许选择的最短日期(含)。
Date
-
storeValue
提交后是否应保留项的值,并在下次渲染表单时恢复。
boolean
-
title
显示在项的左侧标题。
string
-
value
当前项的值
Date
-
onBlur
当项失去焦点时将触发的回调。
(event: FormEvent<Date | null>) => void
-
onChange
当项的 value 发生变化时会触发的回调。
(newValue: Date | null) => void
-
onFocus
当项获得焦点时,应该调用将触发的回调。
(event: FormEvent<Date | null>) => void
-
方法(命令式 API)
focus
() => void
聚焦某项
reset
() => void
将表单项重置为其初始值,或 defaultValue(如果指定)。
Form.Dropdown
带有下拉菜单的表单项。

例子
参数
id*
表单项的 ID。确保为每个表单项分配一个唯一的 ID。
string
-
autoFocus
表单渲染后项是否应自动获得焦点。
boolean
-
defaultValue
条目的默认值。请记住,defaultValue 将在每个组件生命周期配置一次。这意味着如果用户更改该值,则重新渲染时不会配置 defaultValue。
string
-
error
显示表单项验证问题的可选错误消息。如果存在错误,表单项将以红色边框突出显示,并在右侧显示错误消息。
string
-
filtering
切换 Raycast filtering。如果为 true,Raycast 将使用搜索栏中的查询来过滤项目。当为 false 时,扩展程序需要负责过滤。
boolean 或 { keepSectionOrder: boolean }
当指定 onSearchTextChange 时为 false,否则为 true。
info
用于描述表单项的可选信息消息。它显示在项的右侧,并带有一个信息图标。当图标悬停时,将显示信息消息。
string
-
isLoading
是否应在搜索栏旁边显示或隐藏 loading 指示器
boolean
false
placeholder
显示在下拉搜索字段中的占位符文本。
string
"Search…"
storeValue
提交后是否应保留项的值,并在下次渲染表单时恢复。
boolean
-
throttle
onSearchTextChange 处理程序是在每次按下键盘时触发还是延迟以限制事件。当将自定义过滤逻辑与异步操作(例如网络请求)结合使用时,建议设置为 true。
boolean
false
title
显示在项的左侧标题。
string
-
value
当前项的值
string
-
onBlur
当项失去焦点时将触发的回调。
(event: FormEvent<string>) => void
-
onChange
当项的 value 发生变化时会触发的回调。
(newValue: string) => void
-
onFocus
当项获得焦点时调用将触发的回调。
(event: FormEvent<string>) => void
-
onSearchTextChange
当项获得焦点时,应该调用将触发的回调。
(text: string) => void
-
方法(命令式 API)
focus
() => void
聚焦某项
reset
() => void
将表单项重置为其初始值,或 defaultValue(如果指定)。
Form.Dropdown.Item
例子
参数
title*
显示的标题。
string
-
value*
下拉项的值。确保为每个项目分配每个唯一值。
string
-
keywords
一个可选属性,用于提供额外的可索引字符串以供搜索。在 Raycast 中过滤项目时,除了标题之外还会搜索关键字。
string[]
The title of its section if any
Form.Dropdown.Section
视觉上分离的下拉项组。
使用 sections 将相关的菜单项分组在一起。
例子
参数
children
子项
React.ReactNode
-
title
显示在该部分上方的标题
string
-
Form.TagPicker
带有标签选择器的表单项,允许用户选择多个项目。

例子
参数
id*
表单项的 ID。确保为每个表单项分配一个唯一的 ID。
string
-
autoFocus
表单渲染后项是否应自动获得焦点。
boolean
-
children
tag 的子项.
React.ReactNode
-
defaultValue
条目的默认值。请记住,defaultValue 将在每个组件生命周期配置一次。这意味着如果用户更改该值,则重新渲染时不会配置 defaultValue。
string[]
-
error
显示表单项验证问题的可选错误消息。如果存在错误,表单项将以红色边框突出显示,并在右侧显示错误消息。
string
-
info
用于描述表单项的可选信息消息。它显示在项的右侧,并带有一个信息图标。当图标悬停时,将显示信息消息。
string
-
placeholder
token 字段中显示的占位符文本。
string
-
storeValue
提交后是否应保留项的值,并在下次渲染表单时恢复。
boolean
-
title
显示在项的左侧标题。
string
-
value
当前项的值
string[]
-
onBlur
当项失去焦点时将触发的回调。
(event: FormEvent<string[]>) => void
-
onChange
当项的 value 发生变化时会触发的回调。
(newValue: string[]) => void
-
onFocus
当项获得焦点时,应该调用将触发的回调。
(event: FormEvent<string[]>) => void
-
方法(命令式 API)
focus
() => void
聚焦某项
reset
() => void
将表单项重置为其初始值,或 defaultValue(如果指定)。
Form.TagPicker.Item
Form.TagPicker 的子项
例子
参数
Form.Separator
显示分隔线的表单项。用于对表单项进行分组并在视觉上分隔表单项。

例子
Form.FilePicker
带有按钮的表单项,用于打开对话框以选择某些文件 和/或 某些目录(取决于其属性)。


例子
参数
id*
表单项的 ID。确保为每个表单项分配一个唯一的 ID。
string
-
allowMultipleSelection
指示用户是否可以选择多个项或仅选择一项。
boolean
true
autoFocus
表单渲染后项是否应自动获得焦点。
boolean
-
canChooseDirectories
是否可以选择目录。
boolean
false
canChooseFiles
是否可以选择文件。
boolean
true
defaultValue
条目的默认值。请记住,defaultValue 将在每个组件生命周期配置一次。这意味着如果用户更改该值,则重新渲染时不会配置 defaultValue。
string[]
-
error
显示表单项验证问题的可选错误消息。如果存在错误,表单项将以红色边框突出显示,并在右侧显示错误消息。
string
-
info
用于描述表单项的可选信息消息。它显示在项的右侧,并带有一个信息图标。当图标悬停时,将显示信息消息。
string
-
showHiddenFiles
文件选择器是否显示通常对用户隐藏的文件。
boolean
false
storeValue
提交后是否应保留项的值,并在下次渲染表单时恢复。
boolean
-
title
显示在项的左侧标题。
string
-
value
当前项的值
string[]
-
onBlur
当项失去焦点时将触发的回调。
(event: FormEvent<string[]>) => void
-
onChange
当项的 value 发生变化时会触发的回调。
(newValue: string[]) => void
-
onFocus
当项获得焦点时,应该调用将触发的回调。
(event: FormEvent<string[]>) => void
-
方法(命令式 API)
focus
() => void
聚焦某项
reset
() => void
将表单项重置为其初始值,或 defaultValue(如果指定)。
Form.Description
带有简单文本标签的表单项。
不要使用此组件来显示其他表单字段的验证消息。

例子
参数
text*
显示在中间的文本。
string
-
title
描述项左侧的显示标题。
string
-
类型
Form.Event
某些 Form.Item 回调(例如 onFocus 和 onBlur)可以返回可以以不同方式使用的 Form.Event 对象。
target*
包含与事件相关的目标数据的接口
{ id: string; value: any }
例子
Form.Event.Type
不同类型的 Form.Event。可以是 "focus" 或 "blur"。
Form.Values
表单项的值。
对于类型安全的表单值,您可以定义自己的接口。使用表单项的 ID 作为属性名称。
例子
属性
[itemId: string]
any
Yes
给定项的表单值。
Form.DatePicker.Type
用户可以使用 Form.DatePicker 选择日期组件的类型。
枚举成员
DateTime
除了年、月、日之外,还可以选择时、秒
Date
只能选择年、月、日
命令式API
您可以使用 React 的 useRef 钩子来创建可以访问本机表单项公开的命令式 API(例如 .focus() 或 .reset())的变量。
最后更新于