显示antd表单中的一个标题字段文本,无需使用任何input组件

antd form表单,我需要把其中一个title字段显示文本,不要用任何input之类的组件

要在antd表单中显示一个只读文本字段,你可以使用Form.Item组件并将children属性设置为需要显示的文本。下面是一个示例代码:

import { Form } from 'antd';

<Form>
  <Form.Item label="Title">
    <span>这是标题文本</span>
  </Form.Item>
  
  {/* 其他表单项 */}
</Form>

在上面的例子中,<span>标签包含了需要显示的文本内容。你可以根据需要自定义样式或添加其他元素来渲染文本。这样,该字段将以只读方式显示,并且没有任何输入框或编辑功能。

是Form.List代码如下:<Form.List name="sights"> {(fields, { add, remove }) => ( <> {fields.map((field) => ( <Form.Item {...field} label="" name={[field.name, 'title']}

            >
              <Input />
            </Form.Item>
            <Form.Item
              {...field}
              label="Price"
              name={[field.name, 'price']}
              
            >
              <Input />
            </Form.Item>

            <MinusCircleOutlined onClick={() => remove(field.name)} />
          </Space>
        ))}

        <Form.Item>
          <Button type="dashed" onClick={() => add()} block icon={<PlusOutlined />}>
            Add sights
          </Button>
        </Form.Item>
      </>
    )}
  </Form.List>

要在Form.List中显示一个只读文本字段,你可以将<Input>组件替换为一个只读的<span>标签。这样,该字段将以只读方式显示,并且没有任何输入框或编辑功能。下面是修改后的代码示例:

<Form.List name="sights">
  {(fields, { add, remove }) => (
    <>
      {fields.map((field) => (
        <Space key={field.key} align="baseline">
          <Form.Item
            {...field}
            label=""
            name={[field.name, 'title']}
            
          >
            <span>这是标题文本</span>
          </Form.Item>
          <Form.Item
            {...field}
            label="Price"
            name={[field.name, 'price']}
            
          >
            <Input />
          </Form.Item>

          <MinusCircleOutlined onClick={() => remove(field.name)} />
        </Space>
      ))}

      <Form.Item>
        <Button type="dashed" onClick={() => add()} block icon={<PlusOutlined />}>
          Add sights
        </Button>
      </Form.Item>
    </>
  )}
</Form.List>

在上面的例子中,<span>标签包含了需要显示的只读文本内容。你可以根据需要自定义样式或添加其他元素来渲染文本。在Title字段中使用<span>标签后,该字段将以只读方式显示。

这是标题文本 这里我需要显示表单数据的title值

要显示表单数据的title值,你可以使用form.getFieldValue方法来获取字段的值,并将其渲染到<span>标签中。下面是修改后的代码示例:

<Form.List name="sights">
  {(fields, { add, remove }) => (
    <>
      {fields.map((field) => (
        <Space key={field.key} align="baseline">
          <Form.Item
            {...field}
            label=""
            name={[field.name, 'title']}
            
          >
            <span>{form.getFieldValue([field.name, 'title'])}</span>
          </Form.Item>
          <Form.Item
            {...field}
            label="Price"
            name={[field.name, 'price']}
            
          >
            <Input />
          </Form.Item>

          <MinusCircleOutlined onClick={() => remove(field.name)} />
        </Space>
      ))}

      <Form.Item>
        <Button type="dashed" onClick={() => add()} block icon={<PlusOutlined />}>
          Add sights
        </Button>
      </Form.Item>
    </>
  )}
</Form.List>

在上面的例子中,通过在<span>标签中使用form.getFieldValue([field.name, 'title'])来获取并渲染title字段的值。这样,每个表单项的title字段将以只读方式显示,并且显示相应的表单数据。

{formRef.current.getFieldValue([field.name, 'title'])} 不出来啊

抱歉,我之前的回答有误。在Form.List中,要获取表单项的值,你需要使用form.getFieldValue方法来动态地获取指定字段的值。这里有一个修正后的代码示例:

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

const MyForm = () => {
  const [form] = Form.useForm();
  
  return (
    <Form form={form}>
      <Form.List name="sights">
        {(fields, { add, remove }) => (
          <>
            {fields.map((field) => (
              <Space key={field.key} align="baseline">
                <Form.Item
                  {...field}
                  label=""
                  name={[field.name, 'title']}
                >
                  <span>{form.getFieldValue(['sights', field.name, 'title'])}</span>
                </Form.Item>
                <Form.Item
                  {...field}
                  label="Price"
                  name={[field.name, 'price']}
                >
                  <Input />
                </Form.Item>

                <Button onClick={() => remove(field.name)}>Remove</Button>
              </Space>
            ))}

            <Form.Item>
              <Button type="dashed" onClick={() => add()} block>
                Add sights
              </Button>
            </Form.Item>
          </>
        )}
      </Form.List>
    </Form>
  );
};

export default MyForm;

在上面的例子中,我们创建了一个名为form的表单实例,并将其与 <Form> 组件关联。然后,在 Form.List 内部,我们使用 form.getFieldValue(['sights', field.name, 'title']) 来获取每个表单项的 title 字段的值,并将其渲染到 <span> 标签中。确保你已经正确引用了 form 实例并将其传递给相关的组件。