首页
/ Lexical编辑器v0.26.0版本发布:NodeState API与多项优化

Lexical编辑器v0.26.0版本发布:NodeState API与多项优化

2025-06-01 19:37:09作者:俞予舒Fleming

Lexical是一个由Facebook开发的现代化富文本编辑器框架,它采用模块化设计,提供了高度可定制化的编辑体验。作为React生态中的重要编辑器解决方案,Lexical通过虚拟DOM和不可变数据结构实现了高性能的文本处理能力。

本次发布的v0.26.0版本带来了多项重要更新,其中最引人注目的是全新的NodeState API实验性功能,它为节点管理提供了更灵活的状态控制机制。同时,版本还包含了对核心选择逻辑、列表处理、表格操作等多个方面的改进和优化。

核心功能增强

NodeState API实验性功能

v0.26.0引入了NodeState API这一重要实验性功能,它为所有节点类型添加了通用的状态属性。这一设计允许开发者为节点附加任意状态数据,而无需创建自定义节点类型。新API包括createState、getStategetState、getStateChange和$setState等方法,为节点状态管理提供了完整的工具链。

这一特性特别适合需要临时存储节点相关数据的场景,比如实现复杂的交互逻辑或临时标记节点状态。相比传统的自定义节点方案,NodeState API更加轻量且灵活,避免了节点类型膨胀的问题。

选择逻辑重构

版本对RangeSelection.getNodes()方法进行了重构,采用了新的NodeCaret API实现。这一变化带来了几个关键优势:

  1. 引入了$comparePointCaretNext方法,提供了节点位置的完整排序能力
  2. 新增getCommonAncestorgetCommonAncestor和getCommonAncestorResultBranchOrder方法,优化了共同祖先节点的查找逻辑
  3. 提高了选择范围内节点获取的性能和准确性

这些改进使得编辑器在处理复杂文档结构时的选择行为更加可靠和高效。

重要问题修复

跨节点删除行为优化

版本修复了deleteCharacter操作在通过ListNode到ListItemNode时的行为问题。这一修复不仅限于列表场景,实际上改善了所有嵌套非内联元素情况下的删除操作体验。

选择位置计算修正

解决了Point.isBefore方法可能因规范化问题返回错误结果的情况,确保了位置比较的准确性。同时修复了Android Chrome上删除段落时选择位置偏移的问题,提升了移动端编辑体验。

内联元素处理改进

为TextNode和LineBreakNode添加了isInline实现,明确了这些基础节点的内联特性。同时修正了元素的内联标识,确保标记内容能够正确参与文档流布局。

协作编辑优化

针对协作场景,版本改进了合并冲突的处理逻辑,现在能够正确规范化同一块内多个相邻的合并冲突。这一变化使得协作编辑过程中冲突解决的体验更加平滑。

列表功能增强

列表处理方面有两个值得注意的改进:

  1. 修复了退出嵌套列表时保留选择样式的问题,确保了视觉一致性
  2. 列表项符号现在会匹配文本样式,包括颜色等属性,提升了视觉效果的一致性

表格交互改进

表格功能修复了三击选择可能意外选中相邻单元格的问题。同时,Playground中的表格操作菜单定位问题也得到了解决,提升了用户体验。

React集成优化

React绑定方面进行了多项改进:

  1. 移除了自v0.16.0以来已弃用的所有默认导出,统一使用命名导出
  2. 修复了菜单元素在卸载时未正确清理的问题
  3. 确保菜单属性能够立即设置,提高了响应速度

开发体验提升

Playground和示例项目的Vite配置进行了统一和重构,现在可以通过npm run monorepo:dev命令运行基于仓库当前版本Lexical的示例。这一改进极大方便了基于未发布功能开发示例或调试特定场景的工作流程。

总结

Lexical v0.26.0版本通过引入NodeState API为编辑器扩展性开辟了新方向,同时通过多项核心优化提升了编辑器的稳定性和性能。这些改进覆盖了从基础选择逻辑到具体功能模块的多个层面,体现了Lexical项目持续优化用户体验的承诺。对于正在使用或考虑采用Lexical的开发者来说,这个版本值得特别关注。

登录后查看全文
热门项目推荐
相关项目推荐

热门内容推荐

最新内容推荐

项目优选

收起
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
143
1.91 K
kernelkernel
deepin linux kernel
C
22
6
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
8
0
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
192
273
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
927
551
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
421
392
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
145
189
金融AI编程实战金融AI编程实战
为非计算机科班出身 (例如财经类高校金融学院) 同学量身定制,新手友好,让学生以亲身实践开源开发的方式,学会使用计算机自动化自己的科研/创新工作。案例以量化投资为主线,涉及 Bash、Python、SQL、BI、AI 等全技术栈,培养面向未来的数智化人才 (如数据工程师、数据分析师、数据科学家、数据决策者、量化投资人)。
Jupyter Notebook
75
64
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
344
1.3 K
easy-eseasy-es
Elasticsearch 国内Top1 elasticsearch搜索引擎框架es ORM框架,索引全自动智能托管,如丝般顺滑,与Mybatis-plus一致的API,屏蔽语言差异,开发者只需要会MySQL语法即可完成对Es的相关操作,零额外学习成本.底层采用RestHighLevelClient,兼具低码,易用,易拓展等特性,支持es独有的高亮,权重,分词,Geo,嵌套,父子类型等功能...
Java
36
8