演示使用内置和自定义 Transformers 自动处理、格式化、清理用户输入
(空)(空)(空)(空)(空)const form = useFormState({
fields: {
email: {
// 组合多个转换器
transformer: Transformers.compose(
Transformers.trim,
Transformers.toLowerCase
),
validator: Validators.email()
},
age: {
// 字符串转数字
transformer: Transformers.toNumber,
validator: Validators.min(1)
}
}
});const phoneFormatter: ITransformer<string, string> = {
transform: (value: string) => {
const digits = value.replace(/\D/g, '');
if (digits.length <= 3) return digits;
if (digits.length <= 7)
return `${digits.slice(0,3)}-${digits.slice(3)}`;
return `${digits.slice(0,3)}-${digits.slice(3,7)}-${digits.slice(7,11)}`;
}
};
// 使用
const form = useFormState({
fields: {
phone: {
transformer: phoneFormatter
}
}
});const form = useFormState({
fields: {
bio: {
transformer: Transformers.compose(
Transformers.trim,
// 内联自定义转换器
{
transform: (value: string) => value.slice(0, 200)
}
)
}
}
});Transformers.trim 去除首尾空格Transformers.toUpperCase 转大写Transformers.toLowerCase 转小写Transformers.toNumber 字符串转数字Transformers.compose(...) 组合多个转换器compose组合多个简单转换器