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

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

2025-06-01 11:18:35作者:俞予舒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的开发者来说,这个版本值得特别关注。

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

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
176
261
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
860
511
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
129
182
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
259
300
kernelkernel
deepin linux kernel
C
22
5
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
596
57
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
398
371
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
332
1.08 K