我需要保持我的价值作为浮动。所以我给了我的字段这个解析器:
export const parseDecimal = value => value ? parseFloat(value) : value;
export const formatNumber = value => typeof value === 'number' ? value.toString() : value; // <TextInput> freaks out with string
我在我的领域中使用它:
<Field name="decimal" parse={parseDecimal} format={formatNumber} />
我必须使用formateNumber
,这会将数字转换为字符串,因为我使用的是react-native而<TextInput>
元素仅适用于字符串。
但是,无论何时我按.
来写小数,都会被阻止/删除。反正是否允许小数但是连续parseFloat
呢?
答案 0 :(得分:1)
我使用下一种方法:
export const parseDecimal = value => {
return !parseFloat(value) || !Number(value) || value.endsWith('.') ? value : parseFloat(value);
};
它的用法:
<Field
name={'crop_capacity'}
placeholder={'Урожайность (ц/га)'}
parse={(value) => parseDecimal(value)}
component={InputAdapter}
/>
感谢上面的@Ayush Gupta评论。