parseFloat作为解析函数不允许小数

时间:2017-11-24 19:01:14

标签: redux-form

我需要保持我的价值作为浮动。所以我给了我的字段这个解析器:

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呢?

1 个答案:

答案 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评论。