<分享>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


相关文章
|
4月前
|
缓存 前端开发 JavaScript
【第58期】React 开发者的 Awesome 库
【第58期】React 开发者的 Awesome 库
126 1
|
4月前
|
设计模式 前端开发 数据可视化
【第4期】一文了解React UI 组件库
【第4期】一文了解React UI 组件库
297 0
|
4月前
|
存储 前端开发 JavaScript
【第39期】一文认识React的状态管理库
【第39期】一文认识React的状态管理库
139 0
|
4月前
|
资源调度 前端开发 JavaScript
React 的antd-mobile 组件库,嵌套路由
React 的antd-mobile 组件库,嵌套路由
98 0
|
18天前
|
前端开发
React技术栈-react使用的Ajax请求库实战案例
这篇文章介绍了在React应用中使用Axios和Fetch库进行Ajax请求的实战案例,展示了如何通过这些库发送GET和POST请求,并处理响应和错误。
29 10
React技术栈-react使用的Ajax请求库实战案例
|
18天前
|
前端开发
React技术栈-react使用的Ajax请求库用户搜索案例
这篇文章展示了一个React技术栈中使用Ajax请求库(如axios)进行用户搜索的实战案例,包括React组件的结构、状态管理以及如何通过Ajax请求获取并展示GitHub用户数据。
21 7
React技术栈-react使用的Ajax请求库用户搜索案例
|
1月前
|
存储 前端开发 JavaScript
|
1月前
|
前端开发
React——开发调式工具安装【五】
React——开发调式工具安装【五】
23 0
React——开发调式工具安装【五】
|
20天前
|
Web App开发 监控 前端开发
React 性能监测工具大揭秘!Chrome DevTools 高级用法来袭,让你的 React 应用性能飙升!
【8月更文挑战第31天】在前端开发中,React 框架虽简化了高效、交互性强的用户界面构建,但应用复杂性增加亦可能引发性能问题。此时,Chrome DevTools 凭其性能面板成为了优化应用性能的重要工具,能帮助开发者记录与分析加载时间、渲染及脚本执行等性能指标,定位并解决性能瓶颈。同时,其 React 开发者扩展工具允许实时监控组件状态变化,进一步提升性能。结合运用这些功能,将有助于打造流畅的用户体验。
32 0
|
1月前
|
JavaScript 前端开发 安全

热门文章

最新文章