在我们的一种形式中,我们需要在输入字段中显示十进制数字。要求是我们支持十进制数的两种语言环境:12.5
和12,5
。
我们需要将值保持为数字,因此我尝试使用normalize
方法。
function normalize(value: string) {
return +value
.replace(/^[0]+/, "") // numbers can't start with a zero
.replace(/[^\d.,]/, "") // decimals allowed digits and . ,
.replace(/[,]/,"."); // actual numbers are saved with .
}

问题在于它适用于.
但不适用于,
,因为redux-form不允许显示视图和商店的差异值。
一个选项是将值存储为字符串并使用format
方法更改它,但是当我需要将此数据发送到服务器时,我需要它是数字而不是字符串。
是否有更好的解决方案,我们仍然可以将数值保存为数字但支持,
和.
?
答案 0 :(得分:0)
我建议给The Redux Form Value Lifecycle一个好的阅读。
回答你的问题:
format
将redux商店中的数字转换为输入的本地化字符串parse
将用户输入更改为redux商店的数字normalize
醇>
对于完整的“神奇自动编码体验”,您可以在this example中看到,您需要将该数字作为字符串存储在redux存储中,并在表单提交期间将其解析为数字。