将初始值传递给 redux-form
Pass initial value to redux-form
我想将初始值(来自 react-redux 组件的道具)传递给我的 redux-form。但是,当我检查传递给 renderField
的数据时,我没有得到任何价值。我关注了 SO 和 redux-form git 论坛上的帖子,并且我在 mapStateToProps
中使用 initialValues
但它仍然不起作用。
这是我的 react-redux 组件,它包含 redux 形式:
class ShowGroup extends Component {
render() {
if (this.state.loading) {
return <div>Loading group ....</div>;
}
if (this.state.error) {
return <div>{this.state.error}</div>;
}
let group = this.props.groups[this.groupId];
return (
<div className="show-group">
<form>
<Field
name="name"
fieldType="input"
type="text"
component={renderField}
label="Name"
validate={validateName}
/>
</form>
</div>
);
}
}
function mapStateToProps(state) {
return {
groups: state.groups,
initialValues: {
name: 'hello'
}
};
}
const mapDispatchToProps = (dispatch) => {
return {
//.....
};
};
export default reduxForm({
form:'ShowGroup'
})(
connect(mapStateToProps, mapDispatchToProps)(ShowGroup)
);
这是我的 renderField 代码:
export const renderField = function({ input, fieldType, label, type, meta: { touched, error }}) {
let FieldType = fieldType;
return (
<div>
<label>{label}</label>
<div>
<FieldType {...input} type={type} />
{touched && error && <span>{error}</span>}
</div>
</div>
);
}
您导出的包装组件顺序不正确
export default reduxForm({
form:'ShowGroup'
})(
connect(mapStateToProps, mapDispatchToProps)(ShowGroup)
);
应该是
export default connect(mapStateToProps, mapDispatchToProps)(reduxForm({
form:'ShowGroup'
})(ShowGroup);
原因是 redux 形式 HOC 本身需要 initialValues
道具,如果你颠倒顺序,reduxForm
不会获得道具,而是直接将它们传递给组件,它不知道如何处理它。
我想将初始值(来自 react-redux 组件的道具)传递给我的 redux-form。但是,当我检查传递给 renderField
的数据时,我没有得到任何价值。我关注了 SO 和 redux-form git 论坛上的帖子,并且我在 mapStateToProps
中使用 initialValues
但它仍然不起作用。
这是我的 react-redux 组件,它包含 redux 形式:
class ShowGroup extends Component {
render() {
if (this.state.loading) {
return <div>Loading group ....</div>;
}
if (this.state.error) {
return <div>{this.state.error}</div>;
}
let group = this.props.groups[this.groupId];
return (
<div className="show-group">
<form>
<Field
name="name"
fieldType="input"
type="text"
component={renderField}
label="Name"
validate={validateName}
/>
</form>
</div>
);
}
}
function mapStateToProps(state) {
return {
groups: state.groups,
initialValues: {
name: 'hello'
}
};
}
const mapDispatchToProps = (dispatch) => {
return {
//.....
};
};
export default reduxForm({
form:'ShowGroup'
})(
connect(mapStateToProps, mapDispatchToProps)(ShowGroup)
);
这是我的 renderField 代码:
export const renderField = function({ input, fieldType, label, type, meta: { touched, error }}) {
let FieldType = fieldType;
return (
<div>
<label>{label}</label>
<div>
<FieldType {...input} type={type} />
{touched && error && <span>{error}</span>}
</div>
</div>
);
}
您导出的包装组件顺序不正确
export default reduxForm({
form:'ShowGroup'
})(
connect(mapStateToProps, mapDispatchToProps)(ShowGroup)
);
应该是
export default connect(mapStateToProps, mapDispatchToProps)(reduxForm({
form:'ShowGroup'
})(ShowGroup);
原因是 redux 形式 HOC 本身需要 initialValues
道具,如果你颠倒顺序,reduxForm
不会获得道具,而是直接将它们传递给组件,它不知道如何处理它。