快速开始
介绍
@silver-formily/element-plus 是基于 @formily/element-plus 重新封装的组件库,提供了一套开箱即用的表单解决方案。在原来的基础上,我们还做了一大量的重构及优化,使得组件更加易用、灵活。
注意
从 2.x 版本起,组件库的vue绑定库从 @formily/vue 迁移至 @silver-formily/vue。除了需要注意使用时 Field、SchemaField等组件也需要从 @silver-formily/vue 中引入之外。使用自定义封装组件时也需要注意,默认的绑定行为已经改变,请不要再使用 value / onChange 的方式绑定自定义组件。详情请参考官方文档
安装
出于灵活组合的考虑,@silver-formily/element-plus 的所有依赖都采用了peerDependencies,不再有项目中的element-plus与 @formily/element-plus 使用的 element-plus 的版本不一致导致的渲染效果不一致的问题。
从npm 7版本开始,默认会自动安装 peerDependencies,无需手动安装。如果使用的是pnpm可能需要通过配置开启自动安装peerDependencies的配置项,不然会报错。
shell
pnpm config set auto-install-peers true
pnpm install @silver-formily/element-plusshell
npm install --save @silver-formily/element-plus注意
@silver-formily/element-plus 目前仅提供了esm格式的导出,没有提供cjs和umd格式的导出。
响应式数据
<script lang="ts" setup>
import { createForm } from '@formily/core'
import { FormItem, InputNumber, Space } from '@silver-formily/element-plus'
import { Field, FormConsumer, FormProvider } from '@silver-formily/vue'
const form = createForm()
</script>
<template>
<FormProvider :form="form">
<Space>
<Field
name="price"
title="价格"
:initial-value="5.2"
:decorator="[FormItem]"
:component="[
InputNumber,
{
placeholder: '请输入',
style: {
width: 100,
},
},
]"
/>
<FormItem>×</FormItem>
<Field
name="count"
title="数量"
:initial-value="100"
:decorator="[FormItem]"
:component="[
InputNumber,
{
placeholder: '请输入',
style: {
width: 100,
},
},
]"
/>
<FormConsumer>
<template #default="{ form: consumerForm }">
<FormItem>
= {{ `${consumerForm.values.price * consumerForm.values.count} 元` }}
</FormItem>
</template>
</FormConsumer>
</Space>
</FormProvider>
</template>价格:
×
数量:
= 520 元
查看源码