FormSpy-带有脏订阅的onChange不在输入字段中显示值

时间:2019-05-30 20:04:29

标签: reactjs react-final-form

我们正在使用FormSpy,已订阅肮脏。当dirty为true时,FormSpy中的OnChange函数将更新redux中的dirty标签。当我在任何输入字段中键入内容时,第一个字母都不会显示,但是在第一个字母笔划时,redux状态会用dirty:true更新。

还使用

将表单写入其他文件中
<Form
 component={Theform}
/>

这就是我们使用FormSpy的方式

<FormSpy
  subscription={{ dirty: true }}
  onChange={state => this.updateDirty(state.dirty)}
  {...props}
/>

updateDirty(isDirty) {
  const { toggleIsDirty, dirtyState } = this.props;
  if (isDirty) {
    if (!dirtyState.isDirty) {
      toggleIsDirty();
    }
  }
}

未完成if (isDirty)检查时,它将继续更新存储值,但在输入字段中不显示任何内容。 我们哪里出错了?

2 个答案:

答案 0 :(得分:0)

我需要查看更多表单设置以提供帮助。恐怕这还不够。

答案 1 :(得分:0)

当状态存储在多个位置并且状态由未内置于React的事件更新时,您会得到以下行为:组件多次渲染,数据可能会发生冲突,例如您的肮脏国家不同意的情况。一旦数据变为您期望的值,这种重新渲染将停止,在这种情况下,脏状态是相同的。

选项1

仅从商店之一中读取状态。在您的情况下,请忽略最终形式传递的内容,而仅从redux读取

选项2

查找触发第一个非反应事件的位置,并将其包装在unstable_batchedUpdate