reactjs - 如何解决此错误无法解构“this.props.form”的属性“getFieldDecorator”,因为它未定义
问题描述
我正在使用 React 中基于类的组件,我的代码看起来不错,但即使它显示了一些这样的语法错误。--> 无法解构“this.props.form”的属性“getFieldDecorator”,因为它未定义。
所以请帮助我如何解决这个问题
这是 App.js
import React, { Component } from "react";
import 'antd/dist/antd.css';
import { Form, Input, Button, Card, DatePicker, } from "antd";
class App extends Component {
render() {
const { getFieldDecorator } = this.props.form;
return (
<div>
<Card>
<Form onSubmit={this.handleSubmit} className="login-form">
<Form.Item>
{getFieldDecorator("roomno", {
// initialValue: keyData && keyData.room_no,
rules: [{ required: true, message: "Please input your room no!" }],
})(
<Input
name="roomNumber"
style={{ width: 300 }}
placeholder="Room No"
/>,
)}
</Form.Item>
<Form.Item>
{getFieldDecorator("date-picker1", {
rules: [{ required: true, message: "Please input your Checkin date" }],
})(<DatePicker placeholder="Checkin date" style={{ width: 300 }} />)
}
</Form.Item>
<Form.Item>
{getFieldDecorator("date-picker2", {
rules: [{ required: true, message: "Please input your Checkout date" }],
})(<DatePicker placeholder="Checkout date" style={{ width: 300 }} />)
}
</Form.Item>
<Form.Item>
{getFieldDecorator("noOfKeys", {
rules: [{ required: true, message: "Please input your key!" }],
})(
<Input
type="number"
style={{ width: 300 }}
placeholder="No of Keys"
/>,
)}
</Form.Item>
<Form.Item>
<Button type="primary" htmlType="submit" className="login-form-button">
Submit
</Button>
</Form.Item>
</Form>
</Card>
</div>
)
}
}
export default App
解决方案
这里的问题是您使用的代码应该在它自己的表单组件中。你正试图getFieldDecorator
从this.props.form
. 但是您App
没有属性,因为它是您的应用程序的根。
因此,您需要创建一个自定义 Form 组件,并Form.create()
在导出组件时使用。
看看这个例子。
import React from 'react';
import { Form, Input, Button, Card, DatePicker } from "antd";
class LoginForm extends React.Component {
render() {
const { getFieldDecorator } = this.props.form;
return (
<div>
<Card>
<Form onSubmit={this.handleSubmit} className="login-form">
<Form.Item>
{getFieldDecorator("roomno", {
// initialValue: keyData && keyData.room_no,
rules: [{ required: true, message: "Please input your room no!" }],
})(
<Input
name="roomNumber"
style={{ width: 300 }}
placeholder="Room No"
/>,
)}
</Form.Item>
<Form.Item>
{getFieldDecorator("date-picker1", {
rules: [{ required: true, message: "Please input your Checkin date" }],
})(<DatePicker placeholder="Checkin date" style={{ width: 300 }} />)
}
</Form.Item>
<Form.Item>
{getFieldDecorator("date-picker2", {
rules: [{ required: true, message: "Please input your Checkout date" }],
})(<DatePicker placeholder="Checkout date" style={{ width: 300 }} />)
}
</Form.Item>
<Form.Item>
{getFieldDecorator("noOfKeys", {
rules: [{ required: true, message: "Please input your key!" }],
})(
<Input
type="number"
style={{ width: 300 }}
placeholder="No of Keys"
/>,
)}
</Form.Item>
<Form.Item>
<Button type="primary" htmlType="submit" className="login-form-button">
Submit
</Button>
</Form.Item>
</Form>
</Card>
</div>
)
}
}
LoginForm.propTypes = propTypes;
export default Form.create()(LoginForm);
推荐阅读
- javascript - 是否可以缩短 javascript 以避免 if 和 else?
- ruby-on-rails - 将复杂哈希传递给 Sidekiq 作业
- python - 使用 pip 安装旧版本的 sklearn
- python - 来自烧瓶的响应在 React 前端收到的 Json 上有额外的密钥
- laravel - spatie / laravel-translatable 在我尝试检索尚不存在的翻译时显示默认语言环境
- node.js - 为什么官方手册 docker 示例不起作用
- java - 使用 mockito 模拟超类方法调用不起作用
- c - 用指针交换同一字符串的两个字符
- rust - 尝试使用 gstreamer-player rust crate,我收到此 pkg-config 错误
- python - Python:来自具有 N 均值和相同协方差矩阵的多元正态样本