在做复杂的国际单页面时,监控发现的一笔错误,多次指向了 FoundError: Failed to execute 'removeChild' on 'Node'
随后经过排查发现,其共性是Chrome翻译。
Chrome翻译,会更改dom结构,给文案父级添加font标签。
| react源码 | 翻译前 | Chrome翻译后 |
|---|---|---|
<span>{buttonContent}</span> |
所以这对react渲染机制是不友好的,因为我们文本内容会有着业务逻辑变化。
在发生变化的时,react渲染就找不到之前文本节点了。
为此我得解决方案是,给父级加个key值<span key={buttonContent} >{buttonContent}</span>
所以当值发生变化时,diff的节点不是文本节点,而是span标签。