Ant Design表格

这篇博客展示了如何在React应用中使用AntDesign表格组件,并结合自定义验证码组件进行用户登录验证。通过Form.Item和Input组件创建登录表单,同时利用ref获取子组件的方法来刷新验证码。当登录失败时,调用子组件的刷新验证码方法,确保用户可以重新尝试验证。
摘要由CSDN通过智能技术生成

ant Design表格使用

react 类组件
import React, { Component, createRef } from "react";
import { Form, Input, Button, Row, Col, message } from "antd";
import { withRouter } from "react-router-dom";
// 导入封装好的验证码
import Caption from '@/components/Captcha'
// 导入需要的模型
import Model from '@/models/common'
class NormalLogin extends Component {
    // 因为父组件需要获取子组件主动传递过来的数据
    //构造函数
    constructor(props){
        super(props)
        this.ref_captcha = createRef()
    }
    // 初始化状态
    state ={
        key:'',
    }
  render() {
    return (
      <div>
        <Form
          {...layout}
          name="basic"
          initialValues={{
            remember: true,
          }}
          onFinish={this.onFinish}
          onFinishFailed={this.onFinishFailed}
        >
          <Form.Item
            label="用户名"
            name="username"
            rules={[
              {
                required: true,
                message: "请输入用户名!",
              },
            ]}
          >
            <Input />
          </Form.Item>

          <Form.Item
            label="密码"
            name="password"
            rules={[
              {
                required: true,
                message: "请输入密码!",
              },
            ]}
          >
            <Input.Password />
          </Form.Item>
          <Form.Item
            label="验证码"
          >
            <Row gutter={8}>
              <Col span={14}>
                <Form.Item
                  name="captcha"
                  noStyle
                  rules={[
                    {
                      required: true,
                      message: "请输入验证码!",
                    },
                  ]}
                >
                  <Input />
                </Form.Item>
              </Col>
              <Col span={10}>
                {/* 放上验证码组件 */}
                <Caption height = '30' setkey = {this.setkey} ref={this.ref_captcha}/>
              </Col>
            </Row>
          </Form.Item>
          <Form.Item {...tailLayout}>
            <Button type="primary" htmlType="submit" block>
              登录
            </Button>
          </Form.Item>
        </Form>
      </div>
    );
  }
  //   点击事件的返回值是一个对象values
  onFinish = (values) => {
    //   将state中的key属性赋值给values对象中的key属性
    values['key'] = this.state.key
    //需要在这里通过导入的axios发送请求
    Model.normalLogin(values).then((ret)=>{
        // 判断结果请求是否成功
        if(ret.errNo === 0){
            // 请求成功,成功之后跳转页面
            message.success(ret.message,1,()=>{
                this.props.history.push('/dashboard')
            })
        }else{
            // 请求失败
            message.error(ret.errText)
            // 调用子组件(验证码组件)刷新验证码
            this.ref_captcha.current.getMessage()
        }
    })
  };

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

//   用于传递给子组件,获取子返回的key
setkey = (key) =>{
    this.setState(()=>{
        return {
            key,
        }
    })
}
}

// 定义表单
const layout = {
  labelCol: {
    span: 8,
  },
  wrapperCol: {
    span: 16,
  },
};
const tailLayout = {
  wrapperCol: {
    offset: 8,
    span: 16,
  },
};

export default withRouter(NormalLogin); 
···


Ant Design 表格支持在单元格中展示图片,可以通过 `render` 属性来实现。 首先需要在表格列的 `render` 属性中定义一个函数,这个函数的返回值就是要展示的图片元素。可以使用 `img` 标签来展示图片,例如: ```jsx { title: 'Avatar', dataIndex: 'avatar', key: 'avatar', render: (avatarUrl) => <img src={avatarUrl} alt="avatar" style={{ width: 50 }} />, }, ``` 在这个例子中,`avatarUrl` 是一个字符串类型的数据,表示图片的地址。在 `render` 函数中,使用 `img` 标签来展示这个图片,设置 `src` 属性为 `avatarUrl`,并设置 `alt` 属性为图片的描述,最后设置 `style` 属性来调整图片的宽度。 完整的代码示例: ```jsx import { Table } from 'antd'; const dataSource = [ { key: '1', name: 'John Brown', age: 32, address: 'New York No. 1 Lake Park', avatar: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png', }, { key: '2', name: 'Jim Green', age: 42, address: 'London No. 1 Lake Park', avatar: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png', }, { key: '3', name: 'Joe Black', age: 32, address: 'Sidney No. 1 Lake Park', avatar: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png', }, ]; const columns = [ { title: 'Name', dataIndex: 'name', key: 'name', }, { title: 'Age', dataIndex: 'age', key: 'age', }, { title: 'Address', dataIndex: 'address', key: 'address', }, { title: 'Avatar', dataIndex: 'avatar', key: 'avatar', render: (avatarUrl) => <img src={avatarUrl} alt="avatar" style={{ width: 50 }} />, }, ]; const Demo = () => { return <Table dataSource={dataSource} columns={columns} />; }; export default Demo; ``` 运行效果如下: ![Ant Design 表格展示图片示例](https://i.imgur.com/l3BByYk.png)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小胡学前端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值