<分享>React-native的utils工具库

简介: <分享>React-native的utils工具库

1、px转dp (stylesKits.js)


// 设计稿的宽度 / 元素的宽度 = 手机屏幕 / 手机中元素的宽度
// 左边是px = 右边是dp
// => 手机中元素的宽度 = 手机屏幕 * 元素的宽度 / 设计稿的宽度
import { Dimensions } from 'react-native'
/**
 * 屏幕的宽度
 */
export const screenWidth=Dimensions.get("window").width
/**
 * 屏幕的高度
 */
export const screenHeight=Dimensions.get("window").height
/**
 * 将px转为dp
 * @param {Number} elePx 元素的宽度或者高度 单位 px
 */
export const pxToDp=(elePx)=> screenWidth * elePx / 375
复制代码


使用


import React, { Component } from 'react'
import { View, Image, StatusBar } from 'react-native'
import { pxToDp } from "../../../utils/stylesKits"
class Index extends Component {
    render() {
        return (
            <View>
                {/* 0.0状态栏开始 */}
                <StatusBar backgroundColor="transparent" translucent={ true } />
                {/* 0.0状态栏结束 */}
                {/* 1.0 背景图片 开始 */}
                <Image style={{ width: "100%", height: pxToDp(200) }} source={ require('../../../res/profileBackground.jpg') }></Image>
                {/* 1.0 背景图片 结束 */}
            </View>
        )
    }
}
export default Index
复制代码


2、正则校验器(校验手机号码和富文本)validator.js


export default {
    /**
     * 校验手机号码
     * @param {Number} phone 
     */
    validatePhone(phone) {
      const reg = /^[1](([3][0-9])|([4][5-9])|([5][0-3,5-9])|([6][5,6])|([7][0-8])|([8][0-9])|([9][1,8,9]))[0-9]{8}$/;
      return reg.test(phone)
    },
    /**
     * 匹配富文本
     * @param {String} text 富文本内容
     */
    renderRichText(text) {
      //  声明最终要拿到的数组
      const finalList = [];
      //  定义一下正则
      const rule = /(/{.+?})/g;
      // 匹配后的图片字符的数组
      // ["/{fadai}", "/{fanu}", "/{aoman}"]
      const emoArr = text.match(rule);
      if (emoArr === null) {
        finalList.push({ text: text });
      } else {
        // "广东人以后¥¥搞笑¥¥¥¥吃饭"
        // ["广东人以后","","搞笑","","","吃饭"]
        //  ["/{fadai}", "/{fanu}", "/{aoman}"]
        const textArr = text.replace(rule, "¥¥").split("¥¥");//["广东人以后","","搞笑","","","吃饭"]
        while (textArr.length) {
          finalList.push({ text: textArr.shift() });
          if (emoArr.length) {
            finalList.push({ image: emoArr.shift() });
          }
        }
      }
      return finalList;
    }
  }
复制代码


4、请求封装(request.js) axios


import axios from 'axios'
import { BASE_URI } from './pathMap'
import Toast from './Toast'
const instance = axios.create({
    baseURL: BASE_URI
})
// 添加请求拦截器
instance.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    Toast.showLoading('正在请求中...')
    return config;
  }, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  });
// 添加响应拦截器
instance.interceptors.response.use(function (response) {
    // 对响应数据做点什么
    Toast.hideLoading()
    return response;
  }, function (error) {
    // 对响应错误做点什么
    return Promise.reject(error);
  });
export default {
    get: instance.get,
    post: instance.post
}
复制代码


5、小提示框封装(Toast.js)


import React from 'react'
import { ActivityIndicator } from 'react-native'
import { Toast, Theme } from 'teaset'
let customKey = null;
Toast.showLoading = (text) => {
  if (customKey) return;
  customKey = Toast.show({
    text,
    icon: <ActivityIndicator size='large' color={Theme.toastIconTintColor} />,
    position: 'center',
    duration: 100000,
  });
}
Toast.hideLoading = () => {
  if (!customKey) return;
  Toast.hide(customKey);
  customKey = null;
}
export default Toast


相关文章
|
8月前
|
资源调度 前端开发 JavaScript
React 的antd-mobile 组件库,嵌套路由
React 的antd-mobile 组件库,嵌套路由
146 0
|
2月前
|
前端开发 JavaScript UED
React 图标库使用指南
本文详细介绍如何在 React 项目中使用 `react-icons` 等图标库,涵盖环境搭建、基础使用、常见问题与易错点、高级用法等内容,并通过代码案例进行说明。适合初学者和进阶开发者参考。
121 8
|
3月前
|
前端开发 JavaScript API
React开发需要了解的10个库
本文首发于微信公众号“前端徐徐”,介绍了React及其常用库。React是由Meta开发的JavaScript库,用于构建动态用户界面,广泛应用于Facebook、Instagram等知名网站。文章详细讲解了Axios、Formik、React Helmet、React-Redux、React Router DOM、Dotenv、ESLint、Storybook、Framer Motion和React Bootstrap等库的使用方法和应用场景,帮助开发者提升开发效率和代码质量。
161 4
React开发需要了解的10个库
|
3月前
|
前端开发 JavaScript API
探索React Hooks:前端开发的革命性工具
【10月更文挑战第5天】探索React Hooks:前端开发的革命性工具
|
2月前
|
监控 前端开发 JavaScript
React 静态网站生成工具 Next.js 入门指南
【10月更文挑战第20天】Next.js 是一个基于 React 的服务器端渲染框架,由 Vercel 开发。本文从基础概念出发,逐步探讨 Next.js 的常见问题、易错点及解决方法,并通过具体代码示例进行说明,帮助开发者快速构建高性能的 Web 应用。
130 10
|
3月前
|
资源调度 前端开发 JavaScript
React中classnames库使用
【10月更文挑战第7天】
|
2月前
|
资源调度 前端开发 JavaScript
React 测试库 React Testing Library
【10月更文挑战第22天】本文介绍了 React Testing Library 的基本概念和使用方法,包括安装、基本用法、常见问题及解决方法。通过代码案例详细解释了如何测试 React 组件,帮助开发者提高应用质量和稳定性。
98 0
|
4月前
|
前端开发
React技术栈-react使用的Ajax请求库实战案例
这篇文章介绍了在React应用中使用Axios和Fetch库进行Ajax请求的实战案例,展示了如何通过这些库发送GET和POST请求,并处理响应和错误。
72 10
|
4月前
|
前端开发
React技术栈-react使用的Ajax请求库用户搜索案例
这篇文章展示了一个React技术栈中使用Ajax请求库(如axios)进行用户搜索的实战案例,包括React组件的结构、状态管理以及如何通过Ajax请求获取并展示GitHub用户数据。
41 7
React技术栈-react使用的Ajax请求库用户搜索案例
|
5月前
|
存储 前端开发 JavaScript