当前位置: 首页 > wzjs >正文

网站建设服务费属于什么费用sem什么意思

网站建设服务费属于什么费用,sem什么意思,大连做网站软件,环保科技东莞网站建设📌 前言 在移动端开发中,用户对动画的流畅性和过渡自然性有着极高的期待。最近我对一个使用 react-native-modal 实现的 Alert 弹窗组件进行了优化,成功解决了闪烁和卡顿问题,并显著提升了用户体验。 本篇博客将带你深入了解优化…

📌 前言

在移动端开发中,用户对动画的流畅性和过渡自然性有着极高的期待。最近我对一个使用 react-native-modal 实现的 Alert 弹窗组件进行了优化,成功解决了闪烁和卡顿问题,并显著提升了用户体验。

本篇博客将带你深入了解优化的全过程,并提供完整可复用的解决方案。


🎯 问题描述

原始弹窗组件逻辑如下:

  • 使用 bounceIn / bounceOut 实现进出场动画

  • 动画过程中出现闪烁现象

  • 使用状态控制不够精准,组件经常在动画未完成时就被卸载

  • 倒计时逻辑不够鲁棒,容易导致重复调用


🛠️ 解决方案

1. 替换动画效果

将动画更换为更平滑的 fadeInfadeOut,避免抖动与视觉突兀感:

animationIn="fadeIn"
animationOut="fadeOut"
animationInTiming={300}
animationOutTiming={300}
backdropTransitionInTiming={0}
backdropTransitionOutTiming={0}

2. 状态控制组件显示

引入 isVisible 状态,在动画完成后再卸载组件,确保动画完整播放:

useEffect(() => {if (visible) {setIsVisible(true);} else {const timer = setTimeout(() => {setIsVisible(false);}, 300); // 动画时长return () => clearTimeout(timer);}
}, [visible]);

3. 使用 useNativeDriver 提升动画性能

开启原生线程驱动动画,大幅度减少 JavaScript 主线程阻塞带来的卡顿问题:

useNativeDriver

4. 自动跳转逻辑优化

精简并修复倒计时逻辑,避免 setInterval 注册冲突:

useEffect(() => {setCounting(autoSend);
}, [autoSend]);useEffect(() => {if (autoSend) {timer.current = setInterval(() => {if (countNumber <= 1) {onOk();setCounting(false);return;}setCountNumber(prev => prev - 1);}, 1000);return () => clearInterval(timer.current);}
}, [countNumber]);

🧩 完整优化代码

import React, { useRef, useState, useEffect } from 'react';
import { Text, View } from 'react-native';
import Modal from 'react-native-modal';
import Button from '../Button';
import { Props } from './types';
import styles from './styles';const Alert: React.FC<Props> = ({animationIn = 'fadeIn',animationOut = 'fadeOut',visible = false,onOk = () => {},onCancel,cancelText = '取消',okText = '立即前往',customStyles,children,title,subtitle,subtitleTwo,autoSend,onBackdropPress = true,
}) => {const [countNumber, setCountNumber] = useState(3);const [counting, setCounting] = useState(false);const timer: any = useRef(null);const [isVisible, setIsVisible] = useState(false);useEffect(() => {if (visible) {setIsVisible(true);} else {const timer = setTimeout(() => {setIsVisible(false);}, 300);return () => clearTimeout(timer);}}, [visible]);useEffect(() => {setCounting(autoSend);}, [autoSend]);useEffect(() => {if (autoSend) {timer.current = setInterval(() => {if (countNumber <= 1) {onOk();setCounting(false);return;}setCountNumber(prev => prev - 1);}, 1000);return () => clearInterval(timer.current);}}, [countNumber]);if (!isVisible && !visible) {return null;}return (<ModalisVisible={visible}animationIn={animationIn}animationOut={animationOut}backdropTransitionOutTiming={0}backdropTransitionInTiming={0}animationInTiming={300}animationOutTiming={300}useNativeDriveronBackdropPress={onBackdropPress ? onCancel : () => {}}><View style={[styles.container, customStyles?.container]}>{typeof title === 'string' ? <Text style={styles.title}>{title}</Text> : title}{typeof subtitle === 'string' ? <Text style={styles.subtitle}>{subtitle}</Text> : subtitle}{typeof subtitleTwo === 'string' ? (<Text style={[styles.subtitleTwo, customStyles?.subtitleTwo]}>{subtitleTwo}</Text>) : (subtitleTwo)}{children}<View style={[styles.button, customStyles?.button]}>{okText && (<Buttontitle={counting ? `${okText}(${countNumber}s)` : okText}blockonPress={onOk}/>)}{cancelText && (<Button title={cancelText} block type="text" onPress={onCancel} />)}</View></View></Modal>);
};export default Alert;

✅ 优化效果总结

项目优化前优化后
动画流畅度有抖动、闪烁平滑、自然
动画卸载过早卸载动画结束后卸载
组件性能JS 主线程处理原生驱动
倒计时准确性有异常精准触发

📎 技术建议

  • 弹窗组件最好 延迟卸载,否则动画会被打断

  • 不建议使用过于夸张的动画效果,如 bounceInzoomIn,在 UX 层面可能不友好

  • useNativeDriver 是优化 React Native 动画的必备武器

  • 注意 setIntervaluseEffect 的依赖管理,避免逻辑混乱


http://www.dtcms.com/wzjs/111010.html

相关文章:

  • 服装代销的网站源码下载百度推广app
  • 闸北专业做网站sem竞价推广代运营收费
  • 制作网站的方法打开官方网站
  • 广州公司网站开发seo平台
  • 建湖做网站哪家最好百度明星人气榜排名
  • 苏州工业园区规划建设局网站广告联盟点击赚钱平台
  • 动态网站建设名词解释武汉seo软件
  • 广州做网站系统全球疫情最新消息
  • b2c网站建设平台站长工具seo排名
  • 衡水专业网站建设公司网站注册域名
  • 医院网站设计怎么做百度入口
  • 怎么在百度上做网站推广网站流量查询站长之家
  • 网站服务器租用4t多少钱一年啊知乎长沙网络营销顾问
  • 怎么做阿里国际网站的数据分析淘宝关键词搜索量排名
  • 金牌网站设计网站建设惠州seo关键字排名
  • wordpress设置静态页seo搜索引擎优化业务
  • 设计个网站多少钱百度搜索浏览器
  • wordpress+禁用feed免费培训seo网站
  • 老网站改版seo简单优化
  • 乌兰浩特网站制作信息流广告优化
  • 武汉企业建站公司可以搜任何网站的浏览器
  • 阿里云建站视频教程百度在线使用网页版
  • wordpress上传音频 http错误天津seo诊断技术
  • 网站建设团队管理模板推广费用一般多少钱
  • 手机版商城网站都有哪 些功能想卖产品怎么推广宣传
  • 如何修改网站联系人seo优化神器
  • 一级a做爰片就在线手机看韩国网站灰色关键词排名优化
  • 做外贸阿里巴巴有哪些网站关联词有哪些关系
  • 深圳做商城网站建设知名的建站公司
  • 济南做网站建设免费创建自己的网站