Taro 项目中引入 antd-mobile

1,919 阅读2分钟

前言: 目前在写一个【H5】项目,本来是打算直接使用【taro-ui】的,但写到后面发现一个大问题.【taro-ui】居然,没有表单验证相关组件.然后就换了antd-mobile.

本文中的所写的demo代码的码云地址:gitee.com/raotaotao/t…

-------------------------------分割线-------------------------------

一.使用官方脚手架安装Taro.

//PS:myapp1是你自己的项目名称,可以替换
$ npx @tarojs/cli init myapp1

image.png

二.安装antd-mobile插件.

$ npm install --save antd-mobile
# or
$ yarn add antd-mobile
# or
$ pnpm add antd-mobile

文档地址: mobile.ant.design/zh/guide/qu…

在pages/index/index.tsx中进行使用.

import { Component } from "react";
import { View, Text } from "@tarojs/components";
//引入Button组件
import { Button } from "antd-mobile";
import "./index.scss";

export default class Index extends Component {
  componentWillMount() { }

  componentDidMount() { }

  componentWillUnmount() { }

  componentDidShow() { }

  componentDidHide() { }

  render() {
    return (
      <View className='index'>
        <Text>Hello world!</Text>
        {/* 使用Button组件 */}
        <Button>
          一二三
        </Button>
        {/* 写一个普通的Text font-size:17px 字体大小与Button的字体大小相同 */}
        <Text className='hello'>一二三</Text>
      </View>
    );
  }
}

在pages/index/index.scss设置样式.

.hello {
  font-size: 17px;
}

在谷歌模拟器上查看.

image.png

我们再查看css样式会发现我们写的.hello样式中的17px被编译成了0.36267rem(rem移动端H5布局适配的一种单位).但是按钮的原本的17px仍然是17px未被编译.

image.png

解决方式:在config/index.js中进行配置,使postcss插件将px转换rem时包含antd-mobile

//代码,复制到下图的位置上.
esnextModules: ['antd-mobile']

image.png

重启项目,发现两个"一二三"大小相同了. image.png

三.字体尺寸问题.

此时看起来似乎没有问题了..但移动端的转换是以两倍图的方式进行转换的.我们的字体大小通常使用的是28px;

找到antd-mobile/es/global/global.css全局变量.可以看出来.以当前变量使用的值,最大的也才18px,在两倍图的尺寸将会被编译成相当于9px的大小.而大多数浏览器的文字最小限制是12px,因此几乎所有文字都会变成浏览器最小限制的文字大小.此处必须得改.

image.png

我们不要直接改插件包中的数据,而是找到antd-mobile/2x/es/global/global.css.

image.png

将该文件复制出到src下,我这里改名成antd-mobile.2x.css,改名不是刚需操作.

image.png

将原本:root改成:root:root,增加该css样式的权限,让它超过antd-mobible的默认权限 image.png

最后引入app.ts;

image.png

重启后再看:

image.png

查看css样式:root:root已经全面覆盖掉了原本的:root样式. image.png

至此,大功告成!.完.