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

时间:2018-03-22 09:24:18

标签: javascript reactjs react-native redux redux-form

我知道stackoverflow中几乎没有其他类似的问题,但我一直在调查它们,没有人帮助我的方案,或者至少我没有得到它所以这是我的情况:

我有一个组件(让我们称之为MainComponent)里面有两个输入。第一个输入是checkbox,第二个输入是picker(是本地输入)。我想要做的是当我点击一个checkbox时相应的picker被禁用但我无法从{{1}删除选择器的值(我在启用时选择它)状态。如果我选择其他redux-form之前的一个会被禁用,但值仍然存在。

请注意,我基于某些对象数组从另一个组件多次渲染此checkbox

MainFile.js

MainComponent

Inputs.js

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

使用<CheckBox ...> <Picker ...>

正确设置了复选框和选择器

我试图改变这个inputs: {value, onChange}中的值,但后来我意识到这是错误的,它给了我错误,我无法从渲染中改变一些东西。

当我取消选中我想要更改选择器值的复选框时,我想要实现的是一种方式(选择器数据应该从redux-form状态中删除)。我怎样才能做到这一点?非常感谢帮助。

2 个答案:

答案 0 :(得分:2)

无论我从您的问题中了解到什么,您都希望更新redux-form中的字段。

redux-form具有change方法,可用于动态更新任何字段值。

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

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

这会有帮助吗?

答案 1 :(得分:0)

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

将其导入您的文件

import { unregisterField } from 'redux-form';

并在您的代码中

 this.props.unregisterField(yourFormName, yourFieldName);