React中动画不生效的原因分析

这篇文章给大家介绍的内容是关于react中动画不生效的原因分析,有着一定的参考价值,有需要的朋友可以参考一下。

项目中需要做这样的一个组件image.png
根据不同的数值,这个蓝色的条显示的宽度不同。
这个其实很简单,我只要根据数据动态的计算它的宽度,生成节点就行了。
其中的部分react代码如下

{data && data.length > 0          ? data.map((item, index) => (              

{item.name || item.label} {item.value}

)) : null}

登录后复制

这样就实现如上图所示的功能显示,但是现在又有个需求,就是需要那个蓝色的条刚加载的时候动起来。

transition

我一开始就想到了css的transition属性,然后把它加入代码中

.inner {        width: 0;        transition: width 0.6s ease;      }

登录后复制

可是这个动画并没有生效。

然后我就回过头来思考它为什么没有生效?
transition这个属性只有在width属性发生改变的时候才会产生作用。现在只能说明span的width并没有发生改变。
这时候就要说到我的这段代码了,它是一边计算宽度,一边渲染节点的,也就是说它节点生成的时候,宽度就已经定好了。所以transition当然不会生效了

现在我要怎么改进这段代码使动画生效呢?

我只能先让节点生成好,然后再改变它的宽度了。
这就想到了react中的ref属性了,这个属性接受字符串或者一个函数,而这个函数在节点加载完成后或者节点销毁前都会触发,然后我就可以通过这个函数返回的参数,操作这个节点改变宽度了,这正是我所需要的。
有了思路,开始改进代码。

{data && data.length > 0          ? data.map((item, index) => (              

{item.name || item.label} {item.value}

{ if (n && n.style) { n.style.width = `${getWidth(item.value)}px`; } }} />

)) : null}

登录后复制

然后打开浏览器看结果,果然成功了。
效果如下。

7月-19-2018 18-05-36.gif

相关推荐:

js如何实现将上传图片并且压缩的方法

react的使用: React如何渲染UI

以上就是React中动画不生效的原因分析的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2745698.html

(0)
上一篇 2025年3月8日 03:48:13
下一篇 2025年3月8日 03:48:22

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • React Event事件注册的实现

    这篇文章给大家介绍的内容是关于react event事件注册的实现,有着一定的参考价值,有需要的朋友可以参考一下。 React 元素的事件处理和 DOM元素的很相似。但是有一点语法上的不同: React事件绑定属性的命名采用驼峰式写法,而不…

    2025年3月8日
    200
  • 原生JS如何动态加载JS和CSS文件以及代码脚本

    这篇文章给大家介绍的内容是关于原生js如何动态加载js和css文件以及代码脚本,有着一定的参考价值,有需要的朋友可以参考一下。 DOM readyState属性共5中状态 uninitialized:初始状态 loading:documen…

    编程技术 2025年3月8日
    200
  • JS作用域和面向对象的进一步解析

    以上就是JS作用域和面向对象的进一步解析的详细内容,更多请关注【创想鸟】其它相关文章!

    编程技术 2025年3月8日
    200
  • 浅析javascript中事件流的内容

    这篇文章给大家介绍的内容是关于浅析javascript中事件流的内容,有着一定的参考价值,有需要的朋友可以参考一下。 事件通常与函数配合使用,这样就可以通过发生的事件来驱动函数执行,事件是可以被 JavaScript 侦测到的行为 绑定事件…

    2025年3月8日 编程技术
    200
  • javascript数组中常用的API总结

    这篇文章给大家介绍的内容是关于javascript数组中常用的api总结,有着一定的参考价值,有需要的朋友可以参考一下。 数组常用 api 介绍 split():拆分字符串变成数组(对字符串操作)join() :合并数组变成字符串(对数组操…

    编程技术 2025年3月8日
    200
  • 什么是js模块化?js模块化的介绍

    什么是js模块化?js模块化并不是一开始就存在的概念,而是对着工程的要求越来越高,对于js模块开发的需求便显现出来了。因此就出现了关于js模块开发。下面我们就来看一下关于JavaScript模块化实例。 模块化发展历程 js一开始并没有模块…

    编程技术 2025年3月8日
    200
  • jQuery中$()函数的使用方法

    本篇文章给大家分享的是关于jquery中$()函数的使用方法,内容很不错,有需要的朋友可以参考一下,希望可以帮助到大家。 jQuery之$() 一般我们使用jQuery的时候,都是使用$(),$指向全局的jQuery,所以其实是调用了jQu…

    编程技术 2025年3月8日
    200
  • js中利用两个栈实现队列的算法

    本篇文章给大家分享的是关于js中利用两个栈实现队列的算法,内容很不错,有需要的朋友可以参考一下,希望可以帮助到大家。 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 分析 两个栈实现队列,那就…

    编程技术 2025年3月8日
    200
  • js中实现滑动窗口的最大值的算法

    本篇文章给大家分享的是关于js中实现滑动窗口的最大值的算法,内容很不错,有需要的朋友可以参考一下,希望可以帮助到大家。 题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,…

    编程技术 2025年3月8日
    200
  • vue父子组件之间是如何进行传值的

    本篇文章给大家分享的是关于vue父子组件之间是如何进行传值的,内容很不错,有需要的朋友可以参考一下,希望可以帮助到大家。 背景:最近在做vue的项目,因为页面的逻辑比较复杂,代码量较多,所以就想抽离出一些组件放到component里面。问题…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论