请教大家流式传输下,前端渲染 Markdown 图片的问题

99 天前
 samuelclassic
lastMessage.message += chunks // 获取数据
<div class="markdown-body" v-html="renderedContent"></div>
get renderedContent() {
    return marked(this.messageContent)
}

如果 renderedContent 含有图片,由于重新渲染,引发“闪烁”现象。尝试以 chunk 中的换行符分割为字符串数组,然后使用 v-for 渲染。但这样会有多余的 div 标签,观察 ChatGPT 的 DOM 树并非如此。请问大家有什么解决思路吗?感激不尽!

1415 次点击
所在节点    Vue.js
4 条回复
nagisaushio
99 天前
缓存收到的数据,等到达了一个元素的边界再更新上去
xiangyuecn
99 天前
原生的高效还简单
div1=document.querySelector(".markdown-body")
div2=doucment.createElement("div") div2.innerHTML=renderedContent
递归对比两个 div 内部元素差异,把新增的直接 appendChild 到页面对应的位置
samuelclassic
98 天前
luckrnx09
98 天前
1 楼正解

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1064031

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX