当值从null变为空字符串时,Redux表单不会传递新值

当值从null变为空字符串时,Redux表单不会传递新值,redux,redux-form,Redux,Redux Form,我有一个自定义的select组件,如果它的值为null或空字符串,它的行为会有所不同 为了能够将null值传递给Field组件,我将format={null}按照 在redux存储中,我的组件正确地初始化为value:null,并且组件input.value也如预期的那样为null。当我选择带有空字符串的值时,redux form会正确地分派事件@@redux form/CHANGE,并且我字段的值会正确地从null更改为,但我组件中的input.value不会更改,并且仍然为null 另一方面

我有一个自定义的select组件,如果它的值为null或空字符串,它的行为会有所不同

为了能够将null值传递给Field组件,我将format={null}按照

在redux存储中,我的组件正确地初始化为value:null,并且组件input.value也如预期的那样为null。当我选择带有空字符串的值时,redux form会正确地分派事件@@redux form/CHANGE,并且我字段的值会正确地从null更改为,但我组件中的input.value不会更改,并且仍然为null

另一方面,如果我选择了一个非null&非空字符串值,则空字符串值(例如null=>'1'=>)将正确更新input.value,并且我的组件将正确呈现


有人知道为什么执行null=>不会更改输入值,但是null=>'a value'=>会更改输入值吗?

这听起来像是您的react组件接收值:null在接收值:作为道具时决定不更新。我会尝试使用shouldComponentUpdate属性强制组件更新。我添加了shouldComponentUpdatenextProps,nextState,它总是返回true,但不起作用。函数甚至没有被调用,这很不幸。您可能会更成功地将初始输入设置为false。或者,您可以在redux状态中创建另一个键,如form_is_clean:true,当输入被聚焦时,该键会发生更改。我认为真正的问题是React没有将道具从一个错误状态切换到另一个错误状态。您甚至可以尝试设置初始状态输入:true。。。这是JS松散打字的一个普遍问题。是的,这也是我的直觉。今天我将尝试做更多的测试,因为我真的想避免做一些肮脏的黑客来让它工作:/I我尝试了一个普通的react组件,它使用的道具可以是null、空字符串或任何字符串,react在从null切换到空字符串时重新渲染。问题在于redux和/或redux表单。