Reactjs 以redux形式在字段中设置值
我有一个redux表单,它有下拉列表和文本字段。在下拉列表更改时,我必须更新其他字段。其他字段使用自定义组件示例 所以结构是这样的。 1.具有形状的组件 2.字段组件 现在,我在谷歌上搜索,发现几乎没有什么东西可以更新这个字段,但却无法做到。 我试过的 1.在字段中添加状态,如下面的值。不起作用Reactjs 以redux形式在字段中设置值,reactjs,react-redux,redux-form,Reactjs,React Redux,Redux Form,我有一个redux表单,它有下拉列表和文本字段。在下拉列表更改时,我必须更新其他字段。其他字段使用自定义组件示例 所以结构是这样的。 1.具有形状的组件 2.字段组件 现在,我在谷歌上搜索,发现几乎没有什么东西可以更新这个字段,但却无法做到。 我试过的 1.在字段中添加状态,如下面的值。不起作用 <Field name="accountno" value="this.state.accountno" component={InputText} placeholder="Number" /
<Field name="accountno" value="this.state.accountno" component={InputText} placeholder="Number" />
它应该可以使用2或3,但无法找到添加这些内容的位置。请告诉我如何使用这些或任何其他方式。使用
redux form
时,无需将值直接设置到字段中。您可以使用initialize
方法填充表单。或initialValues
作为传递给redux
的对象的属性,以将状态映射到道具。另一种方法是使用redux form
中的函数change
单独设置值。为了使其正常工作,您需要使用connect
fromreact redux
包装组件。它将dispatch
方法嵌入到您的道具中
import React,{Component}来自'React';
从'redux form'导入{reduxForm,Field,change};
从'react redux'导入{connect};
类形式扩展组件{
componentDidMount(){
initialize({accountno:'some value here'});
//分别设置值
this.props.dispatch(change('myFormName','anotherField','value');
}
render(){
返回(
...
)
}
}
Form=reduxForm({
表格:“myFormName”
})(表格);
导出默认连接(状态=>({
//或者,您可以在此处设置初始值。。。
初始值:{
accountno:“这里有些价值”
}
}))(表格);
也遇到了这个问题。解决方案是使用juliobetta回答中的初始值
,但关键是将值设置为变量,例如state.blah
然后,您需要执行以下操作,以便在状态更改时更新字段:
export default connect(state => ({
initialValues: {
accountno: state.accountno,
},
enableReinitialize: true,
}))(Form);
现在,每次更改
state.accountno
,表单字段都会更新。您应该使用PropTypes.shape
@juliobetta将onChange
验证为input
的属性,我应该在哪里添加它?哇!现在这是一个完全不同的问题=)。嗯,我不认为您应该验证自定义输入组件中的所有redux表单
方法和道具(onChange
,禁用
,等等),除非它们是必需的。但是回答你的问题,看看这篇文章。它展示了如何使用proptype形状
。我已经尝试了所有这些选项,但都不起作用。我将其设置为:SecurityExemptionsNew=connect(mapstatetops,mapsdispatchtoprops)(SecurityExemptionsNew)//修饰表单组件导出默认reduxForm({form:'SecurityExcemptionNewForm',//此表单的唯一名称初始值:{service_domain:'Corporate(Internal/External)}})(SecurityExcemptionNewForm)change()
比initalValue更适合我,因为initialize
重新关联我的整个页面,并且在只有change才重新关联该输入的地方使其无效。谢谢julioI我一直在为许多页面寻找更改
选项,非常感谢!!!这有一个缺点,它会将用户可能修改过的其他表单字段重置回其初始值;换句话说,您不能将其用于初始值和动态设置某些字段值,而必须在initialValues
中跟踪整个状态。刚开始感觉像是在和redux作对。也许有一个解决办法。