react-antd

这篇具有很好参考价值的文章主要介绍了react-antd。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、理解 UI 组件库

  • 封装了一些通用的界面功能效果的组件, 简化开发编码
  • 流行的React UI 组件库
    • 国内: Ant Design https://ant-design.antgroup.com/index-cn
    • 国外: Material UI https://www.mdui.org/design/

二、antd 基本使用

2.1 下载antd

yarn add antd / npm i antd

yarn add @ant-design/icons # 后面下载一下, 增加提示功能

2.2 使用antd

  • index.ts
import 'antd/dist/reset.css' // 引入antd的css样式
  • App.tsx
import { Button } from 'antd'
export default function App() {
  return (
    <div style={{ margin: 30 }}>
      <p>button按钮</p>
      <Button type="primary">点我</Button>
    </div>
  );
}

2.3 自定义主题

问题:
​ antd默认的主体颜色是蓝色, 而我们的可以自定义任意的颜色

解决:
使用 ConfigProvider来解决

在index.tsx文件中导入

import { ConfigProvider } from 'antd';

添加配置

root.render(
  <ConfigProvider
    theme={{
      token: {
        colorPrimary: '#00b96b',
      },
    }}
  >
    <App />
  </ConfigProvider>

);

三、antd 中常用组件

3.1 按钮

import React from 'react';
import { Button } from 'antd'
import { SearchOutlined } from '@ant-design/icons';
function App() {
  return (
    <div style={{ margin: 50 }}>
      <Button type='primary' className='ml'>点我</Button>
      <Button type="primary" className='ml' icon={<SearchOutlined />}>
        搜索
      </Button>
      <Button type="primary" disabled className='ml'>
        不可用按钮
      </Button>
      <Button type="primary" danger className='mb'>
        我是红色按钮
      </Button>
    </div>
  );
}
export default App;

3.2 表单

import React from 'react';
import { Button, Form, Input, Checkbox } from 'antd'
function App() {
  return (
    <div style={{ margin: 50 }}>
      <Form
        name="basic"
        labelCol={{ span: 3 }}
        wrapperCol={{ span: 8 }}
        initialValues={{ remember: true, username: 'admin' }}
        autoComplete="off"
      >
        <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 name="remember" valuePropName="checked" wrapperCol={{ offset: 3 }}>
          <Checkbox>Remember me</Checkbox>
        </Form.Item>

        <Form.Item wrapperCol={{ offset: 3 }}>
          <Button type="primary" htmlType="submit">
            获取
          </Button>
        </Form.Item>
      </Form>
    </div>
  );
}

export default App;

获取表单数据的值

const [form] = Form.useForm();
let finish = () => {
    let value = form.getFieldsValue();
    console.log(value)
}
<Form form={form} ...>

3.3 表格

import React from 'react';
import { Table } from 'antd'
function App() {
  const dataSource = [
    {
      name: '胡彦斌1',
      age: 32,
      address: '西湖区湖底公园1号',
    },
    {
      name: '胡彦祖2',
      age: 42,
      address: '西湖区湖底公园1号',
    },
    {
      name: '胡彦祖3',
      age: 42,
      address: '西湖区湖底公园1号',
    },
    {
      name: '胡彦祖4',
      age: 42,
      address: '西湖区湖底公园1号',
    },
    {
      name: '胡彦祖5',
      age: 42,
      address: '西湖区湖底公园1号',
    },
    {
      name: '胡彦祖6',
      age: 42,
      address: '西湖区湖底公园1号',
    },
    {
      name: '胡彦祖7',
      age: 42,
      address: '西湖区湖底公园1号',
    },
    {
      name: '胡彦祖8',
      age: 42,
      address: '西湖区湖底公园1号',
    },
    {
      name: '胡彦祖9',
      age: 42,
      address: '西湖区湖底公园1号',
    },
    {
      name: '胡彦祖10',
      age: 42,
      address: '西湖区湖底公园1号',
    },
  ];

  const columns = [
    {
      title: '姓名',
      //dataIndex需要和实际数据列名称对应,否则将不显示
      dataIndex: 'name',
    },
    {
      title: '年龄',
      dataIndex: 'age',
    },
    {
      title: '住址',
      dataIndex: 'address',
    },
  ];
  return (
    <div style={{ margin: 50 }}>
      <Table columns={columns} dataSource={dataSource} rowKey='name' bordered
        pagination={{
          current: 1,
          pageSize: 5,
          total: 100,
          showQuickJumper: true,
          pageSizeOptions: [2, 5, 10, 20],
          showTotal: (total) => {
            return `总数${total}`
          }
        }}
      />
    </div>
  );
}

export default App;

案例:图书管理界面文章来源地址https://www.toymoban.com/news/detail-542767.html

import React from 'react';
import { Table } from 'antd'
import axios from 'axios'
import { useEffect } from 'react';
import { useState } from 'react';
function App() {
  let [booklist, setBooklist] = useState([]);

  useEffect(() => {
    async function main() {
      let { data } = await axios.get('/api/books');
      setBooklist(data);
    }
    main();
  }, [])

  const columns = [
    {
      title: '编号',
      //dataIndex需要和实际数据列名称对应,否则将不显示
      dataIndex: 'id',
    },
    {
      title: '书名',
      dataIndex: 'name',
    },
    {
      title: '作者',
      dataIndex: 'autor',
    },
    {
      title: '图片',
      dataIndex: 'img',
      render: (pic: string) => {
        return <img src={'/image/' + pic} style={{ width: 100, height: 100 }} />
      }
    },
  ];
  return (
    <div style={{ margin: 50 }}>
      <Table columns={columns} dataSource={booklist} rowKey='name' bordered
        pagination={{
          current: 1,
          pageSize: 5,
          total: 10,
          showQuickJumper: true,
          pageSizeOptions: [2, 5, 10, 20],
          showTotal: (total) => {
            return `总数${total}`
          }
        }}
      />
    </div>
  );
}

export default App;

四、antd在axios请求中添加ts类型约束

4.1 创建接口文件

export interface BookItem {
    id: number,
    name: string,
    infro: string,
    img: string,
    autor: string
}


export type BookList = BookItem[];

4.2 修改组件

import React from 'react';
import { Table } from 'antd'
import axios from 'axios'
import { useEffect } from 'react';
import { useState } from 'react';
import type { BookList } from './book'
function App() {
  let [booklist, setBooklist] = useState<BookList>([]);

  useEffect(() => {
    async function main() {
      let { data } = await axios.get<BookList>('/api/books');
      setBooklist(data);
    }
    main();
  }, [])

  const columns = [
    {
      title: '编号',
      //dataIndex需要和实际数据列名称对应,否则将不显示
      dataIndex: 'id',
    },
    {
      title: '书名',
      dataIndex: 'name',
    },
    {
      title: '作者',
      dataIndex: 'autor',
    },
    {
      title: '图片',
      dataIndex: 'img',
      render: (pic: string) => {
        return <img src={'/image/' + pic} style={{ width: 100, height: 100 }} />
      }
    },
  ];
  return (
    <div style={{ margin: 50 }}>
      <Table columns={columns} dataSource={booklist} rowKey='name' bordered
        pagination={{
          current: 1,
          pageSize: 5,
          total: 10,
          showQuickJumper: true,
          pageSizeOptions: [2, 5, 10, 20],
          showTotal: (total) => {
            return `总数${total}`
          }
        }}
      />
    </div>
  );
}

export default App;

到了这里,关于react-antd的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端框架学习-React(一)

    React 应用程序是由 组件 组成的。 react 程序是用的jsx语法,使用这种语法的代码需要由babel进行解析,解析成js代码。 jsx语法: 只能返回一个根元素 所有的标签都必须闭合(自闭和或使用一对标签的方式闭合) 使用驼峰式命名法给大部分属性命名如:className 大写字母开头的

    2024年02月12日
    浏览(42)
  • 前端框架 Nextjs React 部署

    目录 一、node环境部署 二、静态导出 补充:路由问题 Nextjs打包还是非常方便的,就是网上资料不太全,导致踩了一些坑,下面是我亲自实践的两种打包方式。 一、node环境部署 这种方式最简单,也比较不容易出错,但部署时服务器需安装有node环境,速度没话说,杠杠的! 构

    2024年02月12日
    浏览(45)
  • Vue 和 React 前端框架的比较

    本文研究了流行的前端框架 Vue 和 React 之间的区别。通过对它们的学习曲线、视图层处理方式、组件化开发、响应式数据处理方式和生态系统及社区支持进行比较分析,得出了它们在不同方面的优劣和特点。该研究对于开发者在选择合适的前端框架时提供参考。 Vue 是一款由

    2024年02月13日
    浏览(65)
  • React与Vue:前端框架的比较

    在前端开发领域,React和Vue是两个备受瞩目的框架。它们都提供了构建用户界面的强大工具,但它们在实现方式、性能和设计理念上存在一些关键差异。本文将深入探讨这两个框架之间的主要区别。 首先,让我们从数据流的角度来看。在Vue中,数据流是双向的,这意味着组件

    2024年01月20日
    浏览(49)
  • 前端(七)——React框架的定位与应用场景解析

    😊博主:小猫娃来啦 😊文章核心: React框架的定位与应用场景解析 什么是react? React 是一个由 Facebook 开发的开源 JavaScript库,用于构建用户界面。 于2013年首次发布,并迅速成为前端开发中最受欢迎的框架之一。 在 React 诞生之前,前端开发面临着许多挑战,包括复杂的D

    2024年02月17日
    浏览(45)
  • JavaScript 框架比较:Angular、React、Vue.js

    在 Web 开发领域,JavaScript 提供大量技术栈可供选择。其中最典型的三套组合,分别是 MERN、MEAN 和 MEVN。这些首字母相同的选项各自代表不同的技术加工具组合。为了在这些技术栈中做出明智选择,让我们先从核心组件聊起,再对各自前端框架(React、Angular 和 Vue)进行简化比

    2024年01月20日
    浏览(59)
  • react antd 样式修改

    最近在做一个大数据的大屏ui更改,使用的是antd,需要根据ui稿调很多的antd组件样式 特做一个样式修改记录,也给需要的人一些帮助 我们修改的有以下样式:             如何改呢:  

    2024年02月12日
    浏览(44)
  • react-antd

    封装了一些通用的界面功能效果的组件, 简化开发编码 流行的React UI 组件库 国内: Ant Design https://ant-design.antgroup.com/index-cn 国外: Material UI https://www.mdui.org/design/ index.ts App.tsx 问题: ​ antd默认的主体颜色是蓝色, 而我们的可以自定义任意的颜色 解决: 使用 ConfigProvider 来解决 在

    2024年02月13日
    浏览(41)
  • react antd动态样式实现

    使用a组件的背景: 想给业务流量加标签,使用动态样式后最终实现如下:  如果不使用动态样式时: 当a组件展示的变量为null或者空时,页面样式如下:  

    2024年02月11日
    浏览(42)
  • React与Vue性能对比:两大前端框架的性能

    React和Vue是当今最流行的两个前端框架,它们在性能方面都有着出色的表现。 React的加载速度: 初次加载:由于React使用了虚拟DOM(Virtual DOM)技术,它可以通过比较虚拟DOM树与实际DOM树的差异来进行高效的重绘。这使得React在初次加载时相对较快,因为它只会更新需要修改的

    2024年02月03日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包