MarkdownEditor 中用 lastDefaultMarkdownRef 判断草稿是否仍是上次注入的默认示例,两个原因导致它永远为假:
useEditorStore 是无 persist 的模块单例,软导航后存活,而 lastDefaultMarkdownRef 是组件 ref,重挂载时复位为 null,比较对象丢失
crepe.getMarkdown() 是序列化回来的字符串,与 messages/*.json 里的原始 defaultMarkdown 大概率不逐字节相等(尾部换行、转义差异)
现在的实际行为等价于「store 为空时才注入默认示例」。
复现:进 /zh/editor 不输入任何内容,停留超过 2 秒,点返回首页,切 EN,再进 /en/editor,起始内容仍是中文。
处理方式二选一:删掉这套 ref 机制,让代码等于实际行为;或在 store 里加 hasEdited 标记,由输入事件置位,用标记代替字符串比较。
MarkdownEditor 中用 lastDefaultMarkdownRef 判断草稿是否仍是上次注入的默认示例,两个原因导致它永远为假:
useEditorStore 是无 persist 的模块单例,软导航后存活,而 lastDefaultMarkdownRef 是组件 ref,重挂载时复位为 null,比较对象丢失
crepe.getMarkdown() 是序列化回来的字符串,与 messages/*.json 里的原始 defaultMarkdown 大概率不逐字节相等(尾部换行、转义差异)
现在的实际行为等价于「store 为空时才注入默认示例」。
复现:进 /zh/editor 不输入任何内容,停留超过 2 秒,点返回首页,切 EN,再进 /en/editor,起始内容仍是中文。
处理方式二选一:删掉这套 ref 机制,让代码等于实际行为;或在 store 里加 hasEdited 标记,由输入事件置位,用标记代替字符串比较。