Ant Design of React—第三节

来源:互联网 发布:免费hifi播放软件 编辑:程序博客网 时间:2024/06/05 15:33

在 TypeScript 中使用

使用 create-react-app 一步步地创建一个 TypeScript 项目,并引入 antd。

  • 安装和初始化
  • 引入 antd
  • 高级配置
  • 其他方案
  • 常见问题

安装和初始化#

请确保电脑上已经安装了最新版的 yarn 或者 npm。

使用 yarn 创建项目。

$ yarn create react-app antd-demo-ts --scripts-version=react-scripts-ts

如果你使用的是 npm(接下来我们都会用 yarn 作为例子,如果你习惯用 npm 也没问题)。

$ npm install -g create-react-app$ create-react-app antd-demo-ts --scripts-version=react-scripts-ts

然后我们进入项目并启动。

$ cd antd-demo-ts$ yarn start

此时浏览器会访问 http://localhost:3000/ ,看到 Welcome to React 的界面就算成功了。

引入 antd#

$ yarn add antd

修改 src/App.tsx,引入 antd 的按钮组件。

import * as React from 'react';import Button from 'antd/lib/button';import './App.css';class App extends React.Component {  render() {    return (      <div className="App">        <Button type="primary">Button</Button>      </div>    );  }}export default App;

修改 src/App.css 引入 antd 的样式。

@import '~antd/dist/antd.css';.App {  text-align: center;}...

重新启动 yarn start,现在你应该能看到页面上已经有了 antd 的蓝色按钮组件,接下来就可以继续选用其他组件开发应用了。其他开发流程你可以参考 create-react-app 的官方文档。

高级配置#

我们现在已经把组件成功运行起来了,但是在实际开发过程中还有很多问题,例如上面的例子实际上加载了全部的 antd 组件的样式(对前端性能是个隐患)。

此时我们需要对 create-react-app 的默认配置进行自定义,这里我们使用 react-app-rewired (一个对 create-react-app 进行自定义配置的社区解决方案)。

引入 react-app-rewired 并修改 package.json 里的启动配置。

$ yarn add react-app-rewired --dev
/* package.json */"scripts": {-   "start": "react-scripts start",+   "start": "react-app-rewired start --scripts-version react-scripts-ts",-   "build": "react-scripts build",+   "build": "react-app-rewired build --scripts-version react-scripts-ts",-   "test": "react-scripts test --env=jsdom",+   "test": "react-app-rewired test --env=jsdom --scripts-version react-scripts-ts",}

然后在项目根目录创建一个 config-overrides.js 用于修改默认配置。

module.exports = function override(config, env) {  // do stuff with the webpack config...  return config;};

使用 ts-import-plugin#

ts-import-plugin 是一个用于按需加载组件代码和样式的 TypeScript 插件(原理),现在我们尝试安装它并修改 config-overrides.js文件。

$ yarn add ts-import-plugin --dev
/* config-overrides.js */const tsImportPluginFactory = require('ts-import-plugin')const { getLoader } = require("react-app-rewired");module.exports = function override(config, env) {  const tsLoader = getLoader(    config.module.rules,    rule =>      rule.loader &&      typeof rule.loader === 'string' &&      rule.loader.includes('ts-loader')  );  tsLoader.options = {    getCustomTransformers: () => ({      before: [ tsImportPluginFactory({        libraryName: 'antd',        libraryDirectory: 'es',        style: 'css',      }) ]    })  };  return config;}

然后移除前面在 src/App.css 里全量添加的 @import '~antd/dist/antd.css'; 样式代码,并且按下面的格式引入模块。

import * as React from 'react';import { Button } from 'antd';import './App.css';class App extends React.Component {  render() {    return (      <div className="App">        <Button type="primary">Button</Button>      </div>    );  }}export default App;

最后重启 yarn start 访问页面,antd 组件的 js 和 css 代码都会按需加载,你在控制台也不会看到这样的警告信息。关于按需加载的原理和其他方式可以阅读这里。

自定义主题#

按照 配置主题 的要求,自定义主题需要用到 less 变量覆盖功能。我们可以引入 react-app-rewire 的 less 插件 react-app-rewire-less 来帮助加载 less 样式,同时修改 config-overrides.js 文件。

$ yarn add react-app-rewire-less --dev
  const tsImportPluginFactory = require('ts-import-plugin')  const { getLoader } = require("react-app-rewired");+ const rewireLess = require('react-app-rewire-less');  module.exports = function override(config) {    const tsLoader = getLoader(      config.module.rules,      rule =>        rule.loader &&        typeof rule.loader === 'string' &&        rule.loader.includes('ts-loader')    );    tsLoader.options = {      getCustomTransformers: () => ({        before: [ tsImportPluginFactory({          libraryName: 'antd',          libraryDirectory: 'es',-         style: 'css',+         style: true,        }) ]      })    };+   config = rewireLess.withLoaderOptions({+     modifyVars: { "@primary-color": "#1DA57A" },+   })(config, env);    return config;  }

这里利用了 less-loader 的 modifyVars 来进行主题配置, 变量和其他配置方式可以参考 配置主题 文档。

修改后重启 yarn start,如果看到一个绿色的按钮就说明配置成功了。

其他方案#

你也可以根据 在 create-react-app 中使用 的介绍使用 react-app-rewire-typescript 自己来配置 TypeScript 的开发环境。

常见问题#

error TS2605: JSX element type Xxx is not a constructor function for JSX elements.#

antd 3 以前的版本需要在 tsconfig.json 的 compilerOptions 中配置 "allowSyntheticDefaultImports": true

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 闪克中文版下载 闪克2 游民星空 闪击 闪击6 闪击骑士团 德国闪击波兰 闪击3 李宁闪击5 李宁篮球鞋闪击 闪击骑士团攻略 闪击6篮球鞋 闪击骑士团下载 闪创教育 闪卡 闪卡是什么 银行卡闪付怎么关闭 闪卡的危害 闪刀姬卡组 联通18代闪卡 七田真闪卡 闪卡的作用 闪卡怎么练 联通10代闪卡 闪迪存储卡 闪粉卡 儿童闪卡 七田真闪卡十年后 联通16代闪卡 闪卡早教的危害 什么闪卡好 银行卡闪付是什么意思 杜曼闪卡 闪卡早教 闪卡制作 闪吧音效库 闪之轨迹吧 闪吧 手机闪屏怎么回事 闪回 手机屏幕一闪一闪怎么回事 手机一直闪屏怎么回事