今天项目遇到一个问题,哎好宝,还改了很久…
引用type.js,这是一个模拟打字的js库,具体可以参照官方文档:
github官方文档
这个博客写了操作,比较详尽:
type.js——javascript打字动画库

我这篇博客就不作具体阐述,今天我遇到的问题是这样的,我的项目是create-react-app搭建的react项目。我在函数组件中引入type.js并进行使用,如下所示:

import Typed from 'typed.js';export function Home() {useEffect(() => {  var type = new Typed('.typing-text',{strings : [ 'web designer', 'front end developer', 'graphic designer', 'photographer' ],typeSpeed:200,backSpeed: 50, });
},[]);

然后我就发现页面中出现了两个光标:

刚开始我以为是光标速度出现的时间和消失的时间出现了重合,才出现这种情况,然后我就开始查github官方文档,查到各种调整时间的方式,调了很久,这个问题还是没有解决,到底问题出在了哪呢;

然后我F12,看了一下页面后台:

这里的typing-text,就是我写的spantype动画变化的也就是这个span。但是后面这两个span,不是我写的,看样子应该是这个插件加进去的,为什么是加了两个呢,有时候甚至加了三个。

然后我突然就想到之前学习生命周期的时候,会出现两次渲染的情况,所以我就重新看了官方文档,发现是我useeffect用错了。我照着官方文档修改,最后是这样写的:

import Typed from 'typed.js';
export function Home() {useEffect(() => {  var type = new Typed('.typing-text',{strings : [ 'web designer', 'front end developer', 'graphic designer', 'photographer' ],typeSpeed:200,backSpeed: 50,});return () => {// Make sure to destroy Typed instance during cleanup// to prevent memory leakstype.current.destroy();}
},[]);

多了一个return,但是页面正常了,只有一个光标了。为什么会出现这样的情况呢??

这个插件相当于做了两项工作:

  1. 改变span文档中的文字;
  2. 在原先的span后面加一个光标span

这两项工作新建了dom元素,useeffect函数这里第二个参数是[],相当于componentdidMount,每次页面发生改变,都会重新渲染,渲染都会调用。

所以每次span中文字发生变化,就会新建一个光标span,这里就是因为没有消耗原先的光标span,所以在第二次渲染的时候才会出现多个光标span,这里的return就是消除上一次的光标span;

项目问题记录:使用javascript打字库type.js时出现两个光标——useeffect销毁元素相关推荐

  1. 【网络通信 -- WebRTC】项目实战记录 -- Chrome 启动参数总结

    [网络通信 -- WebRTC]项目实战记录 -- Chrome 启动参数总结 1 -- 报告伪分配跟踪.伪跟踪从当前活动的跟踪事件派生. 2 --/prefetch:1 /prefetch:启动各种 ...

  2. Web基础之Servlet+JDBC+JSP项目实战记录(一)

    Web基础之Servlet+JDBC+JSP项目实战记录(一) 一.项目说明: 通过前面的学习,我们已经对Servlet有了一定的了解:接下来我们要结合数据库和JSP技术一步一步完成一个小型的动态we ...

  3. (B站云e办)SpringBoot开发项目实战记录(七)(员工管理(分页知识))

    (B站云e办)SpringBoot开发项目实战记录(七) 一.员工管理 1.1 准备工作(分页配置类.日期格式化类) 1. mybatisplus配置类分页 2. 日期格式化类(converter) ...

  4. (B站云e办)SpringBoot开发项目实战记录(八)(Easy poi 完成excel导出导入)

    (B站云e办)SpringBoot开发项目实战记录(八) 一. pom依赖 二. 下载文件 2.1 jopo注释注解@Excel与@ExcelEntry 2.2 controller层 (完成exce ...

  5. javaweb项目问题记录(一)

    此文章跟随项目进度进展,用于记录项目中的错误,如文章有错误欢迎指出. 一.ResourceBundle.getBundle文件路径问题 src/config/jdbc_mysql.properties ...

  6. 【Python飞机大战游戏实战+笔记】黑马程序员Python教程项目实战记录【超详细】

    博主在哔哩哔哩上学习了黑马程序员的python教程,并且完成了老师讲的项目实战,为了巩固知识点通过这篇博客来记录一下. 目录 1. 创建python项目+pygame模块下载 1.1 创建项目 1.2 ...

  7. 尚硅谷——谷粒商城项目开发记录——2021.11.19

    尚硅谷--谷粒商城项目开发记录--2021.11.19 出现错误 1.SpringBoot测试类出现Could not autowire. No beans of 'BrandService' typ ...

  8. 尚硅谷——谷粒商城项目开发记录——2021.11.21

    尚硅谷--谷粒商城项目开发记录--2021.11.21 概念: 1.var和let的区别: 作用域: var 声明的变量往往会越域 let 声明的变量有严格局部作用域 声明次数: var 可以声明多次 ...

  9. 尚硅谷——谷粒商城项目开发记录——2021.11.20

    尚硅谷--谷粒商城项目开发记录--2021.11.20 概念: 1.SpringCloud Alibaba: 简介: Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案.此 ...

最新文章

  1. 9月第1周安全回顾 IM安全威胁严重 企业增加无线安全投入
  2. RHEL6开机启动流程详解
  3. linux、sql 常用的一些特殊符号
  4. 【分享】java反射获取、设置、打印对象属性,对象转map基础工具
  5. python逻辑量有什么_Python中的逻辑运算符有什么?
  6. javascript动态创建table
  7. Nature:全球掠夺性期刊已超过15500种
  8. Flutter-Cookbook 非官方翻译
  9. Mongodb删除重复数据
  10. 南海区行政审批管理系统接口规范v0.3(规划) 2.业务申报API 2.1.businessApply【业务申报】...
  11. 命名实体识别(NER)资料收集
  12. django 引入同目录下py文件_快速开发一个简单的Django网站
  13. Java web 部分参考手册(CHM)资源
  14. VB编程操作AutoCAD线型
  15. 单容水箱液位pid控制实验报告_过程控制实验-单容水箱液位控制系统
  16. 网盘源码php,PHP云盘网盘系统(PHP云盘源码工具)V1.1 免费版
  17. mysql联合查询 课程表_oracle 学生表,课程表,选课表. 三表联合查询
  18. html高难度拼图,张馨月婚后生活太悠闲,宅家挑战高难度拼图
  19. docker学习(八)深入浅出理解 dockerFille
  20. 苹果第一台计算机的诞生的,纪念Mac诞生30周年:第一台Mac电脑深度拆解

热门文章

  1. 直流电子负载的操作规程
  2. 打卡小程序源码附搭建教程
  3. tp6.1多应用控制器不存在:app\应用名\controller\应用名
  4. 异常 英语 计算机,电脑开机出现英文字母异常情况怎么解决
  5. Win10安装Ubuntu子系统及图形化界面详细教程20210401
  6. Jenkins:项目持续集成管理
  7. 图形学基础 | 详解3D中的obj文件格式
  8. Linux根文件系统(rootfs原理详解)
  9. 062 反序列化漏洞
  10. Go Gin Example