【问题标题】:React Ant Design - Form items to be split into 2 columnsReact Ant Design - 将表单项拆分为 2 列
【发布时间】:2020-06-25 16:45:51
【问题描述】:

我是 Ant Design 的新手,想将表单组件内的表单项拆分为页面上的 2 列。我尝试使用 flex-box,但它不起作用。

正如您在我的代码中从他们的文档中看到的那样,有这个“formItemLayout”函数,但没有关于它的信息。不知道能不能用它来拆分它们

有没有办法让它们在页面上垂直分成两半(比如分成两列,每列占页面的 50%)

任何帮助将不胜感激。

import React from "react";

import { Form, Select, InputNumber, Input, Button, Upload, Space } from "antd";

import { UploadOutlined } from "@ant-design/icons";

const { Option } = Select;

const formItemLayout = {
  labelCol: {
    span: 6,
  },
  wrapperCol: {
    span: 5,
  },
};

const normFile = (e) => {
  console.log("Upload event:", e);

  if (Array.isArray(e)) {
    return e;
  }

  return e && e.fileList;
};

const NewDevicePage = () => {
  const onFinish = (values) => {
    console.log("Received values of form: ", values);
  };

  return (
<div className="fnew-device-page-wrapper">
        <Form name="new-device-form" {...formItemLayout} onFinish={onFinish} hideRequiredMark >
          <Form.Item
            name={["user", "name"]}
            label="Name"
            rules={[
              {
                required: true,
              },
            ]}
          >
            <Input />
          </Form.Item>

          <Form.Item name={["user", "url"]} label="URL">
            <Input />
          </Form.Item>

          <Form.Item
            name="type"
            label="Type"
            hasFeedback
            rules={[
              {
                required: true,
                message: "Please select the type of your device!",
              },
            ]}
          >
            <Select placeholder="Producer">
              <Option value="producer"> Producer </Option>
              <Option value="consumer"> Consumer </Option>
            </Select>
          </Form.Item>

          <Form.Item label="Price">
            <Form.Item name="price" noStyle>
              <InputNumber min={0} />
            </Form.Item>
          </Form.Item>

          <Form.Item label="Min balance">
            <Form.Item name="min-balance" noStyle>
              <InputNumber min={0} />
            </Form.Item>
          </Form.Item>

          <Form.Item
            name="device-image"
            label="Device image"
            valuePropName="fileList"
            getValueFromEvent={normFile}
            extra="No file selected"
          >
            <Upload name="logo" action="/upload.do" listType="picture">
              <Button>
                <UploadOutlined /> Select file
              </Button>
            </Upload>
          </Form.Item>

          <Form.Item name={["user", "location"]} label="Location">
            <Input />
          </Form.Item>

          <Form.Item
            name="network"
            label="Network"
            hasFeedback
            rules={[
              {
                required: true,
                message: "Please select the Network",
              },
            ]}
          >
            <Select placeholder="net1">
              <Option value="net1"> Network 1 </Option>
              <Option value="net2"> Network 2 </Option>
            </Select>
          </Form.Item>

          <Form.Item label="Minimum amount">
            <Form.Item name="min-offer-amount" noStyle>
              <InputNumber min={0} />
            </Form.Item>
          </Form.Item>

          <Form.Item
            wrapperCol={{
              span: 12,
              offset: 6,
            }}
          >
            <Button shape="round" type="primary" htmlType="submit">
              Add a device
            </Button>

            <Button shape="round" danger>
              Cancel
            </Button>
          </Form.Item>
        </Form>
      </div>
);
};

export default NewDevicePage;

【问题讨论】:

    标签: css reactjs antd


    【解决方案1】:

    我使用问题中提供的表单组件创建了这个sample app。虽然这在 UX 方面没有很好的格式,但它会帮助如何根据您的要求将表单元素格式化为 2 列。请看一下

    我使用antd提供的RowCol来格式化2列中的表单项。

    希望这会有所帮助。

    【讨论】:

    • 成功了!如果我可以在这里给你任何奖项,我会做到的!谢谢!!
    • 哈哈。感谢那 :)。我真的很高兴它有帮助,因为我以前不知道 antd
    • 请看看这个sandboxGauge 图表默认情况下在 chart.js 中不可用,因此为了使其工作,我添加了另一个名为 chartjs-gauge 的依赖项。希望这就是你要找的东西
    • 您知道,您的示例应用程序帮助了我很多,在很多事情上都在苦苦挣扎,而且您的示例应用程序简单而强大!
    • 很高兴帮助你@user5109293123 :)
    猜你喜欢
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 2019-12-09
    • 2022-11-10
    • 2022-12-15
    • 1970-01-01
    相关资源
    最近更新 更多