如何以 redux-form 更改一个字段值基于另一个字段值?

how to change one fields value based on the other in redux-form?

我知道在 Whosebug 中几乎没有其他类似的问题,但我一直在调查它们并且 none 正在帮助我的场景或者至少我没有得到它所以这是我的情况:

我有一个内部有两个输入的组件(我们称之为 MainComponent)。第一个输入是 checkbox,第二个是 picker(是本机输入)。我想做的是,当我单击一个 checkbox 时,相应的 picker 被禁用但我无法删除选择器的值(当它启用时我 selected ) 来自 redux-form 州。如果我 select 其他 checkbox 前一个确实被禁用但值保持不变。

请注意,我根据一些对象数组从另一个组件多次渲染此 MainComponent

MainFile.js

categories.map((categoryItem, index)=>
 items.map((item, index)=>
   <Fields names={[${categoryItem.label}, ${categoryItem.label}.${item.label}]}
           component={Inputs}    
))

Inputs.js

<CheckBox ...>
<Picker ...>

复选框和选择器已正确设置 inputs: {value, onChange}

我曾尝试更改此 inputs.js 中的值,但后来我意识到这是错误的,它给了我错误,我无法从渲染中更改某些内容。

我想要实现的是一种方法,当我取消选中复选框时我还想更改选择器的值(应该从 redux-form 状态中删除选择器数据).我怎样才能做到这一点?将不胜感激。

根据你的问题我了解到你想更新 redux-form 中的字段。

redux-formchange 方法,可用于动态更新任何字段值。

import { reduxForm, change } from 'redux-form';

const mapDispatchToProps = { updateField: (field, data) => change( "YOUR_FORM_NAME", field, data ) }

这会有帮助吗?

如果你想从 redux 状态中删除选择器,你可以使用 props UnregisterField

将其导入您的文件

import { unregisterField } from 'redux-form';

并在您的代码中

 this.props.unregisterField(yourFormName, yourFieldName);