lastMessage.message += chunks // 获取数据
<div class="markdown-body" v-html="renderedContent"></div>
get renderedContent() {
return marked(this.messageContent)
}
如果 renderedContent 含有图片,由于重新渲染,引发“闪烁”现象。尝试以 chunk 中的换行符分割为字符串数组,然后使用 v-for 渲染。但这样会有多余的 div 标签,观察 ChatGPT 的 DOM 树并非如此。请问大家有什么解决思路吗?感激不尽!
1
nagisaushio 108 天前 via Android
缓存收到的数据,等到达了一个元素的边界再更新上去
|
2
xiangyuecn 108 天前
原生的高效还简单
div1=document.querySelector(".markdown-body") div2=doucment.createElement("div") div2.innerHTML=renderedContent 递归对比两个 div 内部元素差异,把新增的直接 appendChild 到页面对应的位置 |
3
samuelclassic OP |
4
luckrnx09 108 天前 via iPhone
1 楼正解
|