Formily如何实现数组元素的删除操作?
时间: 2024-09-19 07:14:55 浏览: 77
在Formily中,实现数组元素的删除操作通常涉及到双向数据绑定和事件处理。以下是一个基本的步骤:
1. **双向数据绑定**:首先,你需要确保你的数组数据源是在Form组件的状态(state)中定义的,并通过`formlyFields`属性映射到表单字段。
```javascript
import { FieldArray } from 'formik';
const fields = [{ type: 'array', key: 'items', items: yourItemSchema }];
```
2. **FieldArray API**:Formily的`FieldArray`提供了`remove`方法,你可以监听`onRemove`事件来触发这个操作,用户删除数组元素时会自动调用。
```javascript
<FieldArray name="items">
{({ remove }) => (
<ul>
{fields.map((item, index) => (
<li key={index}>
{/* 编辑项内容 */}
<button onClick={() => remove(index)}>删除</button>
</li>
))}
</ul>
)}
</FieldArray>
```
3. **事件处理**:当用户点击“删除”按钮时,会触发`onClick`事件,传入的索引作为参数传递给`remove`函数,这将从数组中移除对应位置的项。
4. **更新视图**:在删除后,记得调用`setValues`方法来同步表单状态,确保UI与数据的一致性。
```javascript
const handleSubmit = (values) => {
// 删除数组项后更新values
values.items = values.items.filter((_, i) => i !== deletedIndex);
// 提交表单
onSubmit(values);
}
```
阅读全文