Redux-form不读取SelectField的值

时间:2016-08-24 10:03:34

标签: javascript reactjs redux material-ui redux-form

我有一个非常简单的反应和还原形式。我想要实现的是获取我的表单的所有字段值,并将它们与jQuery ajax一起发送到我的RESTful api。

现在我唯一的问题是,显然redux-form不会读取SelectField的值。例如,当我查看除SelectFields之外的redux-devTools时,每个其他输入都在那里。我搜索了很多并阅读了整个文档,我意识到SelectField在redux-form中有点棘手,但我似乎无法让它工作。如何使用redux-form v5.3.1获取SelectFields值?

我正在使用:

  • Material-ui v0.15.4

  • Redux-form v5.3.1

  • React v15.3.0

编辑1:

我尝试了不同的方法:

首先:在onChange上使用SelectField

                        <SelectField
                            ref="customerGroup"
                            {...customerGroup}
                            fullWidth
                            floatingLabelText="customer group"
                            value={this.state.selectedCustomerGroup}
                            maxHeight={200}
                            onChange={(e,s,value)=>setState({selectedCustomerGroup: value}}
                        >
                            {groups}
                        </SelectField>

第二次:在setState的孩子身上使用SelectField

                        for(let group of groupsArray){
        groups.push(<MenuItem className={style.menuItem} value={group.id} key={group.id} primaryText={group.name} onTouchTap={()=>this.setState({selectedCustomerGroup: group.id})}/>);
    }
                        <SelectField
                            ref="customerGroup"
                            {...customerGroup}
                            fullWidth
                            floatingLabelText="customer group"
                            value={this.state.selectedCustomerGroup}
                            maxHeight={200}
                            {groups}
                        </SelectField>

我的构造函数:

constructor(props){
    super(props);
    this.state = {
        selectedCustomerGroup: 1
    };
}

this你可以看到我的customerGroup SelectField

编辑16/27/8:

由于这个确切的问题,我正计划抛弃redux-form。

2 个答案:

答案 0 :(得分:1)

我需要说你不需要将值保持在本地状态。这只是一个建议。

其次,检查Redux-Form最佳实践。从github等检查开源项目。如果自定义组件没有给你带来任何好处,请保持冷静并使用最简单的组件,也许是纯html标签。

第三,使用fetch api而不是jquery xhr等。

注意setState和refs!

我的回答是(作为你的编码模式)

<SelectField
                        ref="customerGroup"
                        {...customerGroup}
                        fullWidth
                        floatingLabelText="customer group"
                        value={this.state.selectedCustomerGroup}
                        maxHeight={200}
                        onChange={(e,s,value)=>{customerGroup.onChange(e);setState({selectedCustomerGroup: value})}}
                    >
                        {groups}
                    </SelectField>

答案 1 :(得分:0)

这个怎么样?

NSLocale

礼貌:Latest redux-form docs