我有一个这样的字段:
{
render() {
return <Field type="text" onChange={this.debouncedSubmit} />
....
}
debouncedSubmit = debounce(this.props.submit, 500)
}
export default reduxForm({
form: 'week-form',
onSubmit: async function() {
await new Promise(resolve => setTimeout(resolve, 5000))
}
})
除了一个问题,这个工作正常。我们在这里看到提交需要5秒钟。我们也看到deboucne是500ms。所以让我们说用户输入两个字符,然后等待1秒。触发的辩论和提交正在进行中。现在,在提交过程中,让我们说用户输入另一个字符。这会触发去抖动,并在1.5秒时触发提交。但是因为提交目前正在进行中,所以错过了。
是否有一种带有redux-form的模式,不要错过这个?
我想&#34;重新初始化&#34;表单,但是&#34;如果当前字段值与将要用&#34;初始化的值不同,则不更新字段值,然后在componentDidUpdate中如果表单是脏的,那么我将再次触发提交。但是我遇到了一个问题:
我在reduxForm中设置:
enableReinitialize: true,
keepDirtyOnReinitialize: true,
我用数据初始化表单。但是在第一次提交之后,由于某种原因它覆盖了该字段并且我丢失了第三个字符&#34;我在提交过程中投入了。当我将keepDirtyOnReinitialize设置为true时,为什么会发生这种情况。
答案 0 :(得分:0)
所以实际上我的逻辑是有效的。我在网上创建了一个演示,它运行得很完美:
https://codesandbox.io/s/37z9217q6
问题是我在Android上的react-native中这样做,并且有一个错误导致了我的问题,我提交了错误 - https://github.com/facebook/react-native/issues/19085