Reactjs 以redux形式在字段中设置值

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" /

我有一个redux表单,它有下拉列表和文本字段。在下拉列表更改时,我必须更新其他字段。其他字段使用自定义组件示例

所以结构是这样的。 1.具有形状的组件 2.字段组件

现在,我在谷歌上搜索,发现几乎没有什么东西可以更新这个字段,但却无法做到。 我试过的 1.在字段中添加状态,如下面的值。不起作用

<Field name="accountno" value="this.state.accountno" component={InputText} placeholder="Number" />

  • 已尝试Dispatch,但无法使用它。获取无分派i prop类型的错误

    此.props.dispatch(更改('form','accountno','testvalue')

  • 尝试了this.props.fields,但与props类型中的字段不同


  • 它应该可以使用2或3,但无法找到添加这些内容的位置。请告诉我如何使用这些或任何其他方式。

    使用
    redux form
    时,无需将值直接设置到字段中。您可以使用
    initialize
    方法填充表单。或
    initialValues
    作为传递给
    redux
    的对象的属性,以将状态映射到道具。另一种方法是使用
    redux form
    中的函数
    change
    单独设置值。为了使其正常工作,您需要使用
    connect
    from
    react 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作对。也许有一个解决办法。