useSubmission
编辑此页面这个辅助函数用于处理表单提交,可以在操作进行时提供乐观更新以及待处理状态的反馈。
此方法将返回单个(最新的)值,而它的兄弟方法useSubmissions
将返回组件活动期间提交的所有值。可以使用可选的第二个参数作为过滤函数。
需要注意的是,useSubmission
要求表单方法必须是post,否则它将触发浏览器导航且无法工作。
创建action
触发提交的Action应该使用action()
辅助函数创建,当在SolidStart应用中时,建议使用"use server"
指令来利用服务器端的缓存和RPC功能。
过滤提交
作为可选的第二个参数,useSubmission
辅助函数可以接收一个过滤函数,只返回匹配条件的提交。
过滤器接收提交的数据作为参数,并应返回一个布尔值。
例如:下面的action只有在名称为"solid"时才会提交。
乐观更新
当表单提交时,submission
对象将使用新值更新,并且pending
属性将设置为true
。
这允许你向用户提供操作正在进行中的反馈。
一旦操作完成,pending
属性将设置为false
,并且result
属性将使用最终值更新。
错误处理
如果action失败,submission
对象将更新错误信息,并且pending
属性将设置为false
。
这允许你向用户提供操作失败的反馈。此外,useSubmission
的返回类型将有一个新的键error
,其中包含提交处理程序抛出的错误对象。
在这个阶段,你还可以使用retry()
方法重试操作,或使用clear()
清除平台中填充的数据。