我试图理清为什么每当我对输入字段进行聚焦和模糊时,React / Redux / Redux-Form会自动将payload
转换为字符串。
必须有一些干扰过程,但我不知道如何排除故障。
我尝试过使用ReduxDevTools Chrome Extension,基本上输出:
type(pin): "@@redux-form/INITIALIZE"
▶meta(pin)
▶payload(pin)
Amount(pin): 2222
type(pin): "@@redux-form/FOCUS"
▶meta(pin)
type(pin): "@@redux-form/BLUR"
▶meta(pin)
touch(pin): true
payload(pin): "2222.00"
答案 0 :(得分:0)
你需要使用redux-form吗? 如果您的数据可以保留在组件的上下文中,则应该。
如果您不需要处于全局应用状态的数据,则可以选择以下选项:
import React, { Component } from 'react';
import wrapStateHelpers from 'react-state-helpers';
class Example extends Component {
render() {
const { mut, values: { someNumber } } = this.props;
return (
<input
type='number'
value={someNumber}
onChange={mut('someNumber', parseInt)} />
);
}
}
export default wrapStateHelpers(Example);
这只提供了一个事件处理程序和包装组件,它管理组件级状态中的表单状态,然后将该状态作为props中的values
对象传递给组件。
请注意parseInt
传递给mut
。输入字段几乎总是返回一个字符串,react-state-helpers
为数据转换提供api(mut
的第二个参数可以是任何函数)
这是项目/文档的链接,如果这个
答案 1 :(得分:0)
回想起来,这个案子的答案非常明显。我使用normalize
使用我不知道的.toFixed(2)
格式化值,始终返回一个字符串。