从 Y.Map 中删除非空的 Y.Map 子元素会触发 YMapEvent,其中 `oldValue` 为 **空 Y.Map**。
作者: WebCoder49创建于 2026年7月9日更新于 2026年7月11日
标签bug
请节省一些时间并使用以下模板。 在90%的问题里,我无法再现这个问题,因为我不知道你到底在做什么, 在哪个环境中,或者哪个y*版本负责。 尽管你认为问题很明显,但还是使用以下模板。
** 核对清单**
- 你是在报告虫子吗? 对错误报告和特性请求使用 GitHub 问题 。 关于一般性问题,请使用https://discuss.yjs.dev/。
- 尽量在正确的寄存器中报告你的问题。 Yjs包含许多模块. 如有疑问,请向https://GitHub.com/yjs/yjs/issues/报告。
** 描述错误** `YMapEvent.oldValue'是YMap在从它嵌入的YMap父母中删除一个非空的YMap孩子时的"空".
** 废除** 复制行为的步骤 :
- 安装YJS版本 13.6.31
- 撰写此文件`test.mjs':
* 从“yjs”导入为Y;
const ydoc = 新的 Y.Doc ()
缩写为 ymap = ydoc.getMap ("map");
ymap.observate( ymapEvent {{} ) 页面存档备份,存于互联网档案馆
//样本代码.
ymapEvent.changes.keys.forEach ((change, key)) {{(change, key){
如果(更改. action ++ “ 添加” ) {
cope.log('ymap: property "${key}"被添加. 初始值 : `, ymap.get( key).toJSON ()
} 如果( 更改. 动作 } { 更新 } {
contail.log('ymap: property "${key}"被更新. 新值:"${ymap.get(key)}". 上一个数值:`,change.oldValue'
{ 如果( 更改. 动作 } “ 删除 ”){
contail.log('ymap: property "${key}"被删除. 新值:未定义. 上一个数值:`,change.oldValue.toJSON ()
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
) (中文(简体) ).
) (中文(简体) ).
const ymap2 = 新 Y.Map ();
ymap2. 观察( ymapEvent {{})
//样本代码.
ymapEvent.changes.keys.forEach ((change, key)) {{(change, key){
如果(更改. action ++ “ 添加” ) {
cope.log('ymap2: property "${key}"被添加. 初始值 : `, ymap.get( key).toJSON ()
} 如果( 更改. 动作 } { 更新 } {
control.log('ymap2: property "${key}"被更新. 新值:"${ymap.get(key)}". 上一个数值:`,change.oldValue'
{ 如果( 更改. 动作 } “ 删除 ”){
control.log('ymap2: property "${key}"被删除. 新值:未定义. 上一个数值:`,change.oldValue.toJSON ()
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
) (中文(简体) ).
) (中文(简体) ).
ymap2. set("你好","世界")
ymap.set("键", ymap2)
ymap.delete ("键")
- 运行 'node test.mjs' (但这个错误也发生在网页浏览器上,并附有y-websocket和y-indexeddb)
- 在控制台上看到这一点: [JavaScript] ymap:增加了属性"键". 初始值 : {你好:"世界"} ymap:属性"键"被删除. 新值:未定义. 上一个值 :
(不正确, 因为如果从 YMap 中删除 “ 你好 ” , 那么它会首先作为日志出现 。 )
** 预期行为**
```2ZZ
ymap:增加了属性"键". 初始值 : {你好:"世界"}
ymap:属性"键"被删除. 新值:未定义. 上一个值 : {你好:"world"}
** 枪声** 不适用。
** 环境信息**
- 浏览器 / Node.js Node.js 或铬或火狐
- Yjs版本:13.6.31
** 其他情况** 我今晚要离开 . . . . . . .
内容来源: yjs/yjs