看了大家很多的想法,很多人都在说React是声明式渲染,当我们把数据渲染到View上的时候我们并不需要去关心如何去操作DOM去渲染数据,从而也就用不到jQuery
或者有的人说,如果使用了React,还需要使用jQuery的话就是React玩的不规范。
但是我在实际使用React开发我的应用时,如果想要实现某些特效,我认为少不了DOM的操作并且必须要使用jQuery去简化DOM的操作。
例如有以下场景:
有一个用户列表,这个列表的每一项包涵用户的avatar、nickname:当我将鼠标移动到某个nickname、avatar上时,将会弹出一个layer层,它的位置会在nickname或avatar的旁边,为此如果想要实现这种效果,我们需要在其它的地方(body下,使用Portal API)渲染一个Layer层组件(默认是hidden的),当我鼠标移动到avatar、nickname时,通过refs 获取avatar、nickname元素,再获取其相较于整个body的偏移量(offset)作为props传入Layer组件(以及visible props),从而让layer绝地定位在对应用户项的avatar、nickname的一旁。
这种情况,原生javascript并没有提供获取元素相较于整个body的偏移量,需要我们手动去实现:使用递归或者while循环通过offsetParent去获取某个元素相较body的offset,如果这么麻烦,我觉得不如直接import $ from ‘jquery’ 再 $(‘el’).offset().left 或 .top 去获取呢,要想实现类似的网页效果,React压根没有提供类似的API,实现起来我只能想到上述方法。
其实还是想说的是,诸如此类的情况,要想实现一些网页特效,我认为必须使用到jquery(这只是我个人的看法)
我想听听大家的看法,希望大家可以就这个话题发起客观的讨论,相互学习!