material-ui 下拉列表状态的初始值,redux 形式
initial values from state of material-ui dropdown in redux-form
我在 redux-form 中有一个 material-ui 下拉菜单,我想初始化它的值。
我得到了我想要的值 [exercise.exercise_type_id
和 exercise.exercise_type_name
] 以及可用选项列表 [types
,带有 id
和 name
的对象数组properties, among others] 通过分派两个动作:
componentWillMount(){
this.props.actions.exercise.fetchInfo(this.props.params.exerciseId);
this.props.actions.exercise.fetchAllTypes();
};
理想情况下,我希望某处像这样的东西:
_.map(this.props.types, (type) =>{
if (type.id == this.props.exercise.exercise_type_id){
this.setState({
dropDownValue: type.name
});
}
});
但仅针对初始状态,因为我们要处理 handleDropDownChange
的变化。
[当然我会很感激
state = {
dropDownValue: {this.props.exercise.exercise_type_name}
};
但我知道这是一种反模式。但是不管怎样还是不行,props还是空的。]
我的下拉菜单是这样的:
<DropDownMenu {...exercise_type_name} //does nothing
value={dropDownValue}
onChange={onDropDownChange}>
{_.map(types, (type) => {
return <MenuItem key={type.id} value={type.name} primaryText={type.name}/>;
})}
更多代码:
//...
state = {
dropDownValue: ''
};
//...
handleDropDownChange = (event, index, value) => {
this.setState({
dropDownValue: value
});
};
//...
function mapStateToProps(state){
return {
exercise: getExerciseInfo(state),
initialValues: getExerciseInfo(state),
request: getExRequest(state),
types: getExTypes(state)
};
}
//....
export default reduxForm({
form: 'EditExerciseForm',
fields: ['exercise_type_name', 'max_errors_percentage', 'min_speed']
}, mapStateToProps, mapDispatchToProps)(ExerciseEdit);
啊,比我想象的还要简单
这解决了我的问题:
在 DropDownMenu
组件中,它的值应该是这样的:
value={dropDownValue || exercise_type_name.value}
我在 redux-form 中有一个 material-ui 下拉菜单,我想初始化它的值。
我得到了我想要的值 [exercise.exercise_type_id
和 exercise.exercise_type_name
] 以及可用选项列表 [types
,带有 id
和 name
的对象数组properties, among others] 通过分派两个动作:
componentWillMount(){
this.props.actions.exercise.fetchInfo(this.props.params.exerciseId);
this.props.actions.exercise.fetchAllTypes();
};
理想情况下,我希望某处像这样的东西:
_.map(this.props.types, (type) =>{
if (type.id == this.props.exercise.exercise_type_id){
this.setState({
dropDownValue: type.name
});
}
});
但仅针对初始状态,因为我们要处理 handleDropDownChange
的变化。
[当然我会很感激
state = {
dropDownValue: {this.props.exercise.exercise_type_name}
};
但我知道这是一种反模式。但是不管怎样还是不行,props还是空的。]
我的下拉菜单是这样的:
<DropDownMenu {...exercise_type_name} //does nothing
value={dropDownValue}
onChange={onDropDownChange}>
{_.map(types, (type) => {
return <MenuItem key={type.id} value={type.name} primaryText={type.name}/>;
})}
更多代码:
//...
state = {
dropDownValue: ''
};
//...
handleDropDownChange = (event, index, value) => {
this.setState({
dropDownValue: value
});
};
//...
function mapStateToProps(state){
return {
exercise: getExerciseInfo(state),
initialValues: getExerciseInfo(state),
request: getExRequest(state),
types: getExTypes(state)
};
}
//....
export default reduxForm({
form: 'EditExerciseForm',
fields: ['exercise_type_name', 'max_errors_percentage', 'min_speed']
}, mapStateToProps, mapDispatchToProps)(ExerciseEdit);
啊,比我想象的还要简单
这解决了我的问题:
在 DropDownMenu
组件中,它的值应该是这样的:
value={dropDownValue || exercise_type_name.value}