如何阻止Prettier ESLint格式化时自动将代码中的0.00转换为0.0
问题原因
你遇到的0.00被自动转为0.0的行为是Prettier的默认数值字面量格式化逻辑,它会自动移除数值末尾无意义的后缀0,Prettier官方没有提供全局配置项直接关闭该行为。
你当前的ESLint配置中引入了plugin:prettier/recommended,会将Prettier的规则优先级设为最高,所以修改其他ESLint的数值相关规则无法解决该问题,可通过以下方案处理:
可选解决方案
- 方案1:局部忽略Prettier格式化(最轻量化,仅影响当前行)
在需要保留0.00的代码行上方添加// prettier-ignore注释即可,修改后的代码如下:
export const ComponentA = ({ validate, isRequired }) => ( <ComponentB validate={validate} required={isRequired} // prettier-ignore value={0.00} /> );
- 方案2:改为字符串类型传值
如果value属性支持字符串输入,或者你可以在接收组件ComponentB内部做数值转换,直接传字符串"0.00"可以从根源避免数值格式被截断,更适合需要严格保留两位小数显示的表单类场景:
<ComponentB validate={validate} required={isRequired} value="0.00" />
- 方案3:全局适配(适合大量同类场景)
如果项目中有大量需要保留固定小数位的需求,可以安装支持数值精度保留的第三方Prettier插件,配置对应的规则后即可全局生效,不需要重复添加忽略注释。
内容的提问来源于stack exchange,提问作者Yang Wang
相关产品推荐
相关产品推荐

