Ant Design Form component for seamless conduct

Logicwind
3 min readAug 7, 2020

--

Ant Design form is a React UI library that has abundance of easy-to-use components that are useful for building elegant user interfaces.

One of the components is <Form>. It provides built-in functions for collect, validate and submit user input. <Form> in Ant Design is using a decorator pattern for the fields. This is not a problem until you want to separate the form and fields.

Here is a simple example.

import { Form, Input, Button, Checkbox } from 'antd';

const layout = {
labelCol: {
span: 8,
},
wrapperCol: {
span: 16,
},
};
const tailLayout = {
wrapperCol: {
offset: 8,
span: 16,
},
};

const Demo = () => {
const onFinish = values => {
console.log('Success:', values);
};

const onFinishFailed = errorInfo => {
console.log('Failed:', errorInfo);
};

return (
<code>
<Form
{...layout}
name="basic"
initialValues={{
remember: true,
}}
onFinish={onFinish}
onFinishFailed={onFinishFailed}
>
<Form.Item
label="Username"
name="username"
rules={[
{
required: true,
message: 'Please input your username!',
},
]}
>
<Input />
</Form.Item>

<Form.Item
label="Password"
name="password"
rules={[
{
required: true,
message: 'Please input your password!',
},
]}
>
<Input.Password />
</Form.Item>

<Form.Item {...tailLayout} name="remember" valuePropName="checked">
<Checkbox>Remember me</Checkbox>
</Form.Item>

<Form.Item {...tailLayout}>
<Button type="primary" htmlType="submit">
Submit
</Button>
</Form.Item>
</Form>
</code>
);
};

ReactDOM.render(<Demo />, mountNode);

Getting Started

In this tutorial, we’ll build a basic application to showcase Ant Design’s react form component. Our first step will be to set up our boilerplate. I’ve done so using create-react-app.

Then we’ll need to add the antd dependency to the project:

yarn add antd

or

npm i antd

Before we start building our <CustomForm /> component, we'll add a reference to it in the root component:

import React from "react";
import ReactDOM from "react-dom";
import Todo from "./todo";

import "./styles.css";

function App() {
return (
<div className="App">
<CustomForm />
</div>
);
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

Building the CustomForm Component

Now we can start building our <CustomForm /> component. Open a new file called CustomForm.js with the following contents:

import { Form, Input, Button, Checkbox } from 'antd';

const CustomForm = () => {
return (
<Form
name="basic"
initialValues={{
remember: true,
}}
>
<Form.Item
label="Username"
name="username"
rules={[
{
required: true,
message: 'Please input your username!',
},
]}
>
<Input />
</Form.Item>

<Form.Item
label="Password"
name="password"
rules={[
{
required: true,
message: 'Please input your password!',
},
]}
>
<Input.Password />
</Form.Item>

<Form.Item name="remember" valuePropName="checked">
<Checkbox>Remember me</Checkbox>
</Form.Item>

<Form.Item>
<Button type="primary" htmlType="submit">
Submit
</Button>
</Form.Item>
</Form>
);
};

Cool! Now let’s add layout and submit method in our component.

import { Form, Input, Button, Checkbox } from 'antd';

const layout = {
labelCol: {
span: 8,
},
wrapperCol: {
span: 16,
},
};
const tailLayout = {
wrapperCol: {
offset: 8,
span: 16,
},
};

const Demo = () => {
const onFinish = values => {
console.log('Success:', values);
};

const onFinishFailed = errorInfo => {
console.log('Failed:', errorInfo);
};

return (
<Form
{...layout}
name="basic"
initialValues={{
remember: true,
}}
onFinish={onFinish}
onFinishFailed={onFinishFailed}
>
<Form.Item
label="Username"
name="username"
rules={[
{
required: true,
message: 'Please input your username!',
},
]}
>
<Input />
</Form.Item>

<Form.Item
label="Password"
name="password"
rules={[
{
required: true,
message: 'Please input your password!',
},
]}
>
<Input.Password />
</Form.Item>

<Form.Item {...tailLayout} name="remember" valuePropName="checked">
<Checkbox>Remember me</Checkbox>
</Form.Item>

<Form.Item {...tailLayout}>
<Button type="primary" htmlType="submit">
Submit
</Button>
</Form.Item>
</Form>
);
};

ReactDOM.render(<Demo />, mountNode);

Click on submit button and this is the output you get

Success:

{username: "preyash", password: "preyash", remember: true}

That’s how easy it is to make a form with Ant design. If you’d like to learn more about Ant, check out their docs.

Originally published at http://blog.logicwind.com on August 7, 2020.

--

--

Logicwind
Logicwind

Written by Logicwind

We craft digital products for your business growth. Development | Marketing | Branding | Strategic Partnership

No responses yet