```typescript
lastMessage.message += chunks // 获取数据
```

```vue
<div class="markdown-body" v-html="renderedContent"></div>
```

```typescript
get renderedContent() {
    return marked(this.messageContent)
}
```

如果 renderedContent 含有图片,由于重新渲染,引发“闪烁”现象。尝试以 chunk 中的换行符分割为字符串数组,然后使用 v-for 渲染。但这样会有多余的 div 标签,观察 ChatGPT 的 DOM 树并非如此。请问大家有什么解决思路吗?感激不尽!
举报· 58 次点击
登录 注册 站外分享
3 条回复  
nagisaushio 小成 2024-8-10 19:29:33
缓存收到的数据,等到达了一个元素的边界再更新上去
xiangyuecn 初学 2024-8-10 19:51:13
原生的高效还简单
div1=document.querySelector(".markdown-body")
difshex=doucment.createElement("div") difshex.innerHTML=renderedContent
递归对比两个 div 内部元素差异,把新增的直接 appendChild 到页面对应的位置
luckrnx09 小成 2024-8-11 08:58:24
1 楼正解
返回顶部