React技术栈-React UI之ant-design使用入门

简介: 关于React技术栈中使用ant-design库的入门教程,包括了创建React应用、搭建开发环境、配置按需加载、编写和运行代码的步骤,以及遇到错误的解决方法。

作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.最流行的开源React UI组件库

1>.material-ui(国外)

  官网地址: 
    http://www.material-ui.com/#/
  github地址: 
    https://github.com/callemall/material-ui

2>.ant-design(国内蚂蚁金服)

  PC官网: 
    https://ant.design/index-cn

  移动官网: 
    https://mobile.ant.design/index-cn

  Github: 
    https://github.com/ant-design/ant-design/
  Github: 
    https://github.com/ant-design/ant-design-mobile/

二.ant-design-mobile使用入门

1>.使用create-react-app创建react应用

C:\Users\yinzhengjie\WebstormProjects\myweb>npm install create-react-app -g
C:\Users\yinzhengjie\AppData\Roaming\npm\create-react-app -> C:\Users\yinzhengjie\AppData\Roaming\npm\node_modules\create-react-app\index.js
+ create-react-app@3.3.0
updated 1 package in 9.527s

C:\Users\yinzhengjie\WebstormProjects\myweb>
C:\Users\yinzhengjie\WebstormProjects\myweb>create-react-app antd-mobile-demo

2>.搭建antd-mobile的基本开发环境(参考链接:https://mobile.ant.design/docs/react/introduce-cn)

C:\Users\yinzhengjie\WebstormProjects\myweb> npm install antd-mobile --save

3>.修改"index.html"的配置文件讲'name=“viewport" '标签对应的content的值末尾追加"user-scalable=no",与此同时再加一段js代码解决移动端触摸屏带有的300ms延迟问题,如下图所示。

4>.下载依赖包实现按需加载/打包组件(js/css)

C:\Users\yinzhengjie\WebstormProjects\myweb\antd-mobile-demo>npm install react-app-rewired babel-plugin-import --save-dev

5>.创建"config-overrides.js"文件,内容如下图所示,目的就是为原有的配置文件注入按需打包插件的功能。(详细说在官方文档有说明:"https://ant.design/docs/react/introduce-cn")

const {injectBabelPlugin} = require('react-app-rewired');

module.exports = function override(config, env) {
    config = injectBabelPlugin(['import', {libraryName: 'antd-mobile', style: 'css'}], config);
    return config;
};

config-overrides.js文件内容

三.编写代码并运行脚手架

1>.脚手架目录组织结构

2>.编写代码**

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
    <meta name="theme-color" content="#000000" />
    <meta
      name="description"
      content="Web site created using create-react-app"
    />

    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
    <script src="https://as.alipayobjects.com/g/component/fastclick/1.0.6/fastclick.js"></script>
    <script>
      if ('addEventListener' in document) {
        document.addEventListener('DOMContentLoaded', function() {
          FastClick.attach(document.body);
        }, false);
      }
      if(!window.Promise) {
        document.writeln('<script src="https://as.alipayobjects.com/g/component/es6-promise/3.2.2/es6-promise.min.js"'+'>'+'<'+'/'+'script>');
      }
    </script>

    <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
    <!--
      manifest.json provides metadata used when your web app is installed on a
      user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
    -->
    <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
    <!--
      Notice the use of %PUBLIC_URL% in the tags above.
      It will be replaced with the URL of the `public` folder during the build.
      Only files inside the `public` folder can be referenced from the HTML.

      Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
      work correctly both with client-side routing and a non-root public URL.
      Learn how to configure a non-root public URL by running `npm run build`.
    -->

    <title>React App</title>
  </head>
  <body>
    <noscript>You need to enable JavaScript to run this app.</noscript>
    <div id="root"></div>
    <!--
      This HTML file is a template.
      If you open it directly in the browser, you will see an empty page.

      You can add webfonts, meta tags, or analytics to this file.
      The build step will place the bundled scripts into the <body> tag.

      To begin the development, run `npm start` or `yarn start`.
      To create a production bundle, use `npm run build` or `yarn build`.
    -->
  </body>
</html>

index.html文件内容

{
  "short_name": "React App",
  "name": "Create React App Sample",
  "icons": [
    {
      "src": "favicon.ico",
      "sizes": "64x64 32x32 24x24 16x16",
      "type": "image/x-icon"
    },
    {
      "src": "logo192.png",
      "type": "image/png",
      "sizes": "192x192"
    },
    {
      "src": "logo512.png",
      "type": "image/png",
      "sizes": "512x512"
    }
  ],
  "start_url": ".",
  "display": "standalone",
  "theme_color": "#000000",
  "background_color": "#ffffff"
}

main.jsx文件内容

import React,{Component} from 'react';
import {Button,Toast} from 'antd-mobile';

export default class App extends Component{

    handleClick = () =>{
        //关于提示框的样式可直接参考官方文档:https://mobile.ant.design/components/toast-cn/
        Toast.success("提交成功");
    }

    render(){
        return (
            <div>
                {/*关于组件的样式可直接参考官方文档:https://mobile.ant.design/components/button-cn/*/}
                <Button type='warning' onClick={this.handleClick}>提交信息</Button>
                </div>
            )
    }
}

app.jsx文件内容

import React from "react";
import {render} from "react-dom";
import 'antd-mobile/dist/antd-mobile.css';
import App from './components/app'

//渲染组件标签
render(<App />,document.getElementById('root'));

index.js文件内容

const { override, fixBabelImports } = require('customize-cra');

module.exports = override(
    fixBabelImports('import', {
        libraryName: 'antd-mobile',
        style: 'css',
     }),
);

config-overrides.js文件内容

{
  "name": "antd-mobile-demo",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.4.0",
    "@testing-library/user-event": "^7.2.1",
    "react": "^16.12.0",
    "react-dom": "^16.12.0",
    "react-scripts": "3.3.0"
  },
  "scripts": {
    "start": "  start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "babel-plugin-import": "^1.13.0",
    "react-app-rewired": "^2.1.5"
  }
}

package.json文件内容

3>.运行程序出错故障排除

C:UsersyinzhengjieWebstormProjectsmywebantd-mobile-demo>npm start            #如果遇到下面的报错不要慌,继续往下看有解决方案。

  重新修改"config-overrides.js"文件内容,如下所示:
    const { override, fixBabelImports } = require('customize-cra');

    module.exports = override(
        fixBabelImports('import', {
            libraryName: 'antd-mobile',
            style: 'css',
         }),
    );

  参考链接:  
      https://mobile.ant.design/docs/react/use-with-create-react-app-cn

4>.再次运行项目,使用手机模式查看

5>.点击红色的长条会弹出一个提示框

目录
相关文章
|
12天前
|
前端开发 数据可视化 JavaScript
🚀打造卓越 UI:2024 年不容错过的 9 个 React UI 组件库✨
本文介绍了2024年最受欢迎的9个React UI组件库,每一个都在设计、功能和定制化上有独特的优势,包括Material UI、Ant Design、Chakra UI等。这些组件库为开发者提供了强大、灵活的工具,可以帮助构建现代化、无障碍且高效的Web应用程序。文章详细分析了每个库的特点、适用场景以及关键功能,帮助开发者在项目中做出最合适的选择,无论是打造企业级仪表板还是时尚的用户界面。
46 6
🚀打造卓越 UI:2024 年不容错过的 9 个 React UI 组件库✨
|
15天前
|
前端开发 JavaScript 开发者
探索现代Web前端技术:React框架入门
【10月更文挑战第9天】 探索现代Web前端技术:React框架入门
|
23小时前
|
监控 前端开发 JavaScript
React 静态网站生成工具 Next.js 入门指南
【10月更文挑战第20天】Next.js 是一个基于 React 的服务器端渲染框架,由 Vercel 开发。本文从基础概念出发,逐步探讨 Next.js 的常见问题、易错点及解决方法,并通过具体代码示例进行说明,帮助开发者快速构建高性能的 Web 应用。
17 10
|
2月前
|
消息中间件 前端开发
React技术栈-组件间通信的2种方式
本文介绍了React技术栈中组件间通信的两种方式:通过props传递数据和使用消息发布(publish)-订阅(subscribe)机制,并通过实例代码展示了如何使用PubSubJS库实现跨组件通信。
51 11
React技术栈-组件间通信的2种方式
|
2月前
|
前端开发
React技术栈-react使用的Ajax请求库实战案例
这篇文章介绍了在React应用中使用Axios和Fetch库进行Ajax请求的实战案例,展示了如何通过这些库发送GET和POST请求,并处理响应和错误。
43 10
React技术栈-react使用的Ajax请求库实战案例
|
2月前
|
移动开发 前端开发 JavaScript
构建高效跨平台移动应用:React Native入门指南
【8月更文挑战第47天】在移动开发领域,React Native凭借其跨平台特性和高效的开发模式赢得了开发者的青睐。本文将通过一个简易的待办事项应用实例,带领读者快速入门React Native,并展示如何利用JavaScript和React框架构建具有原生性能的应用。我们将探讨环境配置、界面布局、状态管理和数据流,以及如何打包和发布您的应用。准备好,让我们开始React Native之旅!
70 20
|
2月前
|
前端开发
React技术栈-react使用的Ajax请求库用户搜索案例
这篇文章展示了一个React技术栈中使用Ajax请求库(如axios)进行用户搜索的实战案例,包括React组件的结构、状态管理以及如何通过Ajax请求获取并展示GitHub用户数据。
28 7
React技术栈-react使用的Ajax请求库用户搜索案例
|
2月前
|
前端开发 NoSQL MongoDB
React技术栈-基于react脚手架编写评论管理案例
这篇文章介绍了在MongoDB中使用sort和投影来对查询结果进行排序和限制返回的字段,通过具体的命令示例展示了如何实现这些操作。
46 6
React技术栈-基于react脚手架编写评论管理案例
|
2月前
|
前端开发 Python
React技术栈-React路由插件之自定义组件标签
关于React技术栈中React路由插件自定义组件标签的教程。
48 4
React技术栈-React路由插件之自定义组件标签
|
2月前
|
前端开发 程序员 API
React技术栈-React路由插件之react-router的基本使用
这篇博客介绍了React路由插件react-router的基本使用,包括其概念、API、以及如何通过实战案例在React应用中实现SPA(单页Web应用)的路由管理。
50 9

热门文章

最新文章