如何以 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-form
有 change
方法,可用于动态更新任何字段值。
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);
我知道在 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-form
有 change
方法,可用于动态更新任何字段值。
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);