|
36 | 36 | - **监听`state`的变化** |
37 | 37 |
|
38 | 38 | 使用`store.watch`监听`state`的变化,当`state`变化时,将数据更新到`name=<path>`的表单元素上即可。 |
39 | | - |
40 | | - |
41 | | -## 快速入门 |
42 | | - |
43 | | -### 第1步: 创建表单 |
44 | | - |
45 | | -首先,我们需要使用`useForm`创建一个表单。 |
46 | | - |
47 | | -```tsx |
48 | | -import { useForm } from "@autostorejs/react" |
49 | | - |
50 | | -const { Form } = useForm({ |
51 | | - user:{ |
52 | | - firstName:"Zhang", |
53 | | - lastName:"Fisher", |
54 | | - age:18, |
55 | | - vip:false |
56 | | - } |
57 | | -}) |
58 | | -``` |
59 | | - |
60 | | - |
61 | | -- `useForm`内部调用`createStore`来创建一个`AutoStore`,所以其本质上`useForm`是一个`useStore`超集。所以`useForm`返回的对象中包含了`useStore`返回的对象。 |
62 | | - |
63 | | - ```tsx |
64 | | - const { useReactive,watch,$,.... } = useForm({...}) |
65 | | - ``` |
66 | | -- `useForm`返回值中最主要的是`Form`组件,该组件是对标准`form`的封装。 |
67 | | - |
68 | | - |
69 | | -### 第2步:声明字段 |
70 | | - |
71 | | - |
72 | | - |
73 | | - |
74 | | -### 第3步:提交表单 |
75 | | - |
76 | | - |
77 | | - |
78 | | - |
79 | | -## 基本用法 |
80 | | - |
81 | | -`useForm`返回一个`Form`组件,该组件是对标准`form`元素的封装。 |
82 | | - |
83 | | -```tsx |
84 | | -import { useForm } from "@autostorejs/react" |
85 | | -const { Form } = useForm({ |
86 | | - user:{ |
87 | | - firstName:"Zhang", |
88 | | - lastName:"Fisher", |
89 | | - age:18, |
90 | | - vip:false |
91 | | - } |
92 | | -}) |
93 | | -<Form> |
94 | | - <input name="user.firstName" /> |
95 | | - <input name="user.lastName" /> |
96 | | - <input name="user.age" /> |
97 | | - <input name="user.vip" /> |
98 | | -</Form> |
99 | | -``` |
100 | | - |
101 | | -就这么简单,轻松实现`表单`与`store.state`之间的双向绑定了,输入的数据会自动同步到`state`中,反之亦然。 |
102 | | - |
103 | | - |
104 | | -**下面是一个简单的示例:** |
105 | | - |
106 | | -<demo react="form/form/base.tsx"/> |
107 | | - |
108 | | - |
109 | | - |
110 | | -:::info 提示 |
111 | | -配置`input`元素的`name=<状态数据路径>`即可。 |
112 | | -::: |
113 | | - |
| 39 | + |
| 40 | + |
114 | 41 |
|
115 | 42 |
|
116 | 43 | ## 表单字段 |
117 | 44 |
|
118 | 45 |
|
119 | 46 |
|
120 | | -## Field组件 |
121 | | - |
122 | | -`Field`组件是`useForm`提供的一个用于封装表单字段的高级组件,可以用于更加灵活的表单字段封装。 |
123 | | - |
124 | | -`Field`组件的基本用法如下: |
125 | | - |
126 | | -```tsx |
127 | | - |
128 | | -const { Field, Form } = useForm({...}) |
129 | | - |
130 | | -<Form onSubmit={}> |
131 | | - <Field |
132 | | - name="user.firstName" // 使用绑定的状态路径 |
133 | | - validate={validate} // 自定义校验规则 |
134 | | - render={({value,timeout,....,bind})=>{ |
135 | | - // 在此渲染表单字段 |
136 | | - return <div> |
137 | | - <label>First Name</label> |
138 | | - <input {...bind} /> |
139 | | - </div> |
140 | | - }} |
141 | | - /> |
142 | | -</Form> |
143 | | -``` |
144 | 47 |
|
145 | 48 |
|
146 | 49 |
|
|
0 commit comments