当我使用redux表单时,请收到以下错误。状态树形式中有一个[object Object]键,在图片中,category_edit键是通过调用initialize
函数生成的。
Failed prop type: Invalid prop `form` of type `object` supplied to `Form(CategoryEdit)`, expected `string`.
答案 0 :(得分:0)
您收到此错误,因为reduxForm
希望收到form: "string"
的设置对象,其中string是您的表单名称。根据错误,您将对象传递给设置中的表单属性,例如form: { ... }
。如果您可以显示您的表单代码,我可以指出一个确切的解决方法。
答案 1 :(得分:0)
我解决了这个问题,当使用表单组件时,不要输入道具。例如:
@reduxForm({
form: 'demo'
})
class Demo extends Component {
render () {
return (
<form>
<Field component="input" label="name" name="name"></Field>
</form>
);
}
}
class Container extends Component {
render() {
return (<Demo {...this.props}></Demo>); // !!==> remove this.props.
}
}
原因将在稍后完成......我会找到。
答案 2 :(得分:0)
借调Honpery对自己问题的回答并稍微扩展一下。看来如果你将一个道具传递给名为'form'的表单组件,它就会变得混乱。
所以,例如:
<ContactForm
form={this.props.form}
/>
将以悲伤告终。将其更改为:
<ContactForm
formDetails={this.props.form}
/>
摆脱了那个奇怪的错误/问题。
答案 3 :(得分:0)
form: {...}
设置为对象而不是字符串是问题发生的地方。为我删除它摆脱了错误。
更多动手示例:
错误的代码:
export default connect(
state => ({ ...state.lotOperation, form: state.lotOperationForm }),
dispatch => bindActionCreators(actionCreators, dispatch))(LotOperationIndex)
解决方案
export default connect(
//notice here i'm not setting "form: {..}" to an object anymore.
state => ({ ...state.lotOperation }),
dispatch => bindActionCreators(actionCreators, dispatch))(LotOperationIndex)