chooks
Version:
基于 [`@vue/composition-api`](https://github.com/vuejs/composition-api) 的vue hooks函数
67 lines (56 loc) • 2.27 kB
Markdown
### useForm
> 为【表单】提供初始化数据,重置,数据验证,提交,自动提交等逻辑
#### Type
> fields的值为一个ref对象,但当需要在模板中使用fields.a时,需要另fields本身也为一个ref对象,即return ref(fields)
```ts
function useForm<T>(): {
fields:Ref<T>
rules:Ref<{ [K in keyof T]:Array<string | Array<any>> }>
reset(autoCommit:boolean):void
valid():boolean|T
commit():Ref<Function>
setAutoCommit(commitList:boolean|string[]):Function
}
```
#### Return
- fields — 表单字段
- rules — 表单验证规则:验证通过则返回true,否则返回失败原因tip的数组
- key:字符串
- key:应与fields中的键相对应
- key:tip中作为该字段的释义,如```{ "手机号码": ["empty"] }``` 则tip为"手机号码不能为空"
- value:数组
- value:```[]``` 不验证
- value:```["empty"]``` 非空验证
- value:```[[1,2]]``` 枚举验证,表示只能为1或2
- value:```["email", "phone", "tel, "url", "card"]``` 内置规则,分别表示电子邮箱,+86手机号码,座机号码,url地址和身份证号码
- reset(true) — 将表单的值重置为传入时fields的值,传入true则自动执行一次commit
- valid() — 表单验证,验证通过则返回true,否则返回失败原因tip的数组
- commit() — 表单提交函数
- setAutoCommit(true) — 设置自动commit,传入数组则只对数组中的字段自动commit,返回一个函数,执行后取消监听
#### Example
```js
import { ref, Ref, onMounted } from "@vue/composition-api";
import { useForm } from 'chooks'
export default {
setup(){
let { fields, rules, reset, valid, commit, setAutoCommit } = useForm()
fields.value = {
"用户名": ""
}
rules.value = {
"用户名": ["empty"]
}
commit.value = function () {
console.log("commit")
}
reset()
valid()
let stop = setAutoCommit(["用户名"])
stop()
return {
form: ref(fields),
set, reset, commit
}
}
}
```