完全通过配置实现复杂的条件显示逻辑,无需手动编写 if 判断。
// 方式1:简单值匹配
{
name: 'creditCard',
showWhen: {
field: 'paymentMethod',
is: 'credit'
}
}
// 方式2:值不等于
{
name: 'otherReason',
showWhen: {
field: 'reason',
isNot: 'none'
}
}
// 方式3:验证状态
{
name: 'nextStep',
showWhen: {
field: 'email',
isValid: true, // 邮箱验证通过
isTouched: true // 且已经触摸过
}
}
// 方式4:自定义匹配
{
name: 'discount',
showWhen: {
field: 'total',
matches: (value) => value > 100
}
}
// 方式5:复杂条件(使用 condition 函数)
{
name: 'special',
condition: (values) => {
return values.type === 'A' &&
values.level > 5 &&
!values.disabled;
}
}{#if orderType === 'physical'}
<Field name="address" />
{#if deliveryMethod !== 'pickup'}
<Field name="shippingAddress" />
{/if}
{:else if orderType === 'digital'}
<Field name="email" />
{#if emailValid}
<Field name="phone" />
{/if}
{/if}<Form schema={formSchema} />
// Schema 中配置
{
name: 'shippingAddress',
showWhen: {
field: 'deliveryMethod',
isNot: 'pickup'
}
}{}