我有一个非常简单的反应和还原形式。我想要实现的是获取我的表单的所有字段值,并将它们与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
我尝试了不同的方法:
首先:在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
};
}
和你可以看到我的customerGroup
SelectField
编辑16/27/8:
由于这个确切的问题,我正计划抛弃redux-form。
答案 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)