ant design 多张图片显示

  // 上传多张图片
  const getBase641 = (file) =>
    new Promise((resolve, reject) => {
      const reader = new FileReader();
      reader.readAsDataURL(file);
      reader.onload = () => resolve(reader.result);
      reader.onerror = (error) => reject(error);
    });
  const [theone, setTheone] = useState(false);
  const [thetwo, setThetwo] = useState('');
  const [preview, setPreview] = useState('');
  const [fileList, setFileList] = useState([]);
 
  const handlePreview = async (file) => {
    if (!file.url && !file.preview) {
      file.preview = await getBase641(file.originFileObj);
    }
    setThetwo(file.url || file.preview);
    setTheone(true);
    setPreview(file.name || file.url.substring(file.url.lastIndexOf('/') + 1));
  };     
 
 
 
         <Upload
            name="file"
            action="自己要用的图片接口"
            listType="picture-card"
            fileList={fileList}
            onPreview={handlePreview}
            onChange={({ fileList: newFileList }) => {
              setFileList(newFileList);
            }}
          >
            {fileList.length >= 3 ? null : <div>上传图片</div>}
          </Upload>
          <Modal
            open={theone}
            title={preview}
            footer={null}
            onCancel={() => setTheone(false)}
          >
            <img
              style={{
                width: '100%',
              }}
              src={thetwo}
            />
          </Modal>
        </div>
      </Modal>

点击编辑的时候可以看到已经存在的图片


const a = 图片的数组.map((url) => ({
                //自己写的数据
              }));
setFileList(a);

可以通过使用 `ProForm.Item` 的 `render` 属性来自定义表单项的渲染方式,从而实现在表单中显示图片。 以下是一个使用 `ProForm.Item` 自定义表单项渲染方式来显示图片的示例代码: ```jsx import { ProForm, ProFormText } from '@ant-design/pro-form'; import { Upload } from 'antd'; const MyUpload = () => { return ( <Upload> <Button icon={<UploadOutlined />}>Upload</Button> </Upload> ); }; const MyImage = ({ value }) => { return ( <img src={value} alt="preview" style={{ maxWidth: '100%', maxHeight: '100%' }} /> ); }; const MyFormItem = ({ name, label, rules, render }) => { return ( <ProForm.Item name={name} label={label} rules={rules} render={render} /> ); }; const MyForm = () => { return ( <ProForm> <MyFormItem name="name" label="Name" rules={[{ required: true }]} render={() => <ProFormText />} /> <MyFormItem name="avatar" label="Avatar" render={() => <MyImage />} rules={[{ required: true }]} /> <MyFormItem name="upload" label="Upload" render={() => <MyUpload />} rules={[{ required: true }]} /> </ProForm> ); }; ``` 在上面的代码中,我们定义了一个 `MyUpload` 组件和一个 `MyImage` 组件,分别用来处理上传文件和显示图片的逻辑。然后我们又定义了一个 `MyFormItem` 组件,用来自定义表单项的渲染方式。在 `MyFormItem` 组件中,我们通过 `render` 属性来指定表单项的渲染方式,实现了在表单中显示图片的效果。 最后,在 `MyForm` 组件中,我们使用 `MyFormItem` 组件来定义表单项,其中 `name` 属性用来指定表单项的字段名,`label` 属性用来指定表单项的标签名,`rules` 属性用来指定表单项的验证规则,`render` 属性用来指定表单项的渲染方式。通过这样的方式,我们可以实现一个自定义表单项渲染方式的表单,并在其中显示图片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值