首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
昵称可以为空
前端工程师 @alibaba
·
3年前
关注
屏蔽作者: 昵称可以为空
举报
react 简单而美好:ReactDOM 源码对选区的处理(一),这里先讲怎么获取偏移量。
使用场景:用户选择了 DOM 上的一些文本,在 react 组件更新后鼠标选择的状态会被清除掉,所以应该恢复之前的选择。实现的方案是在 outerNode 节点内记住选区的文本在所有文本的中的位置(偏移量),这样可以在渲染后恢复选区的设置。
选区:
developer.mozilla.org
选区范围:
developer.mozilla.org
ReactDOM 选区的发展历程:
github.com
这里我们先解决怎么获取 outerNode 节点内,用户选择的文本在所有文本内的偏移量。
图1是 react 16之前的方案,使用了 Range,有性能问题。
gist.github.com
github.com
图2是 react 16 后发布的新方案,从 outerNode 开始通过深度和广度遍历,找到偏移量
图3是图2的单元测试对比的版本,图2不好理解,先理解图3后在看图2
图4是作者认为图2的方案真是如诗般优美。图2的方案确实很精美的设计啊
展开
收起
查看大图
向左旋转
向右旋转
赞过
分享
1
1
相关推荐
JYM,你们敢天天踩点下班吗?
25 赞 ·
344 评论
兄弟们是这样的,昨天晚上我发现我女朋友手机微信聊天背景是个男人,好像在和一个男的聊天。 我仔细一看这个男的我见过,她们之前就认识,是同事关系。她们之间关系很好,在公司是饭搭子的好友。 但是那个男的给她发了一张上半身照片,我女朋友还保存下来了。 后来她去洗澡了,我想着感觉不太对,于是她洗完澡我想看她手机聊天记录。她威胁说要和我分手。 后来我就没提了,但是我左想右想总觉得自己没做错什么,我该怎么办,不看的话我心里有点不舒服 我要是看就分手
54 赞 ·
466 评论
周五啦
38 赞 ·
153 评论
相关推荐
JYM,你们敢天天踩点下班吗?
25 赞 ·
344 评论
兄弟们是这样的,昨天晚上我发现我女朋友手机微信聊天背景是个男人,好像在和一个男的聊天。 我仔细一看这个男的我见过,她们之前就认识,是同事关系。她们之间关系很好,在公司是饭搭子的好友。 但是那个男的给她发了一张上半身照片,我女朋友还保存下来了。 后来她去洗澡了,我想着感觉不太对,于是她洗完澡我想看她手机聊天记录。她威胁说要和我分手。 后来我就没提了,但是我左想右想总觉得自己没做错什么,我该怎么办,不看的话我心里有点不舒服 我要是看就分手
54 赞 ·
466 评论
周五啦
38 赞 ·
153 评论