🐛 fix(vscode): 代码阅读对话里的回答悬停链接时卡片一直闪、盖住链接:回答每次重画都新建 {__html},React 换了对象就整段重设 innerHTML,弹出定义卡片引起的重画把悬停着的链接换成新元素,卡片按脱离页面的旧链接落到左上角盖住链接,指针下的新链接又重新问卡片、再被换掉,来回闪;回答改用 MarkdownPreview,同一段 HTML 用同一个对象,链接不再被换
This commit is contained in:
1 parent
d6960b894c
commit
2841e2b477
3 files changed
+62
-7
No files matched your search
@@ -12,6 +12,7 @@ import { useCopyText } from '@/hooks/useCopyText'
|
||||
import { renderMarkdown, renderMarkdownOnce } from './markdown'
|
||||
import { answerPreview, relativeTime, unfinished } from './qa'
|
||||
import { MAX_IMAGES, pickImages, readImage, transferFiles } from './qaImages'
|
||||
import { MarkdownPreview } from './TextPreview'
|
||||
import { showInViewport } from './useReveal'
|
||||
|
||||
/** 一种对话在界面上怎么称呼:区域的名字、图标、「问过 N 次」、删一条、输入框的提示和名字、回答长出来时的状态 */
|
||||
@@ -157,7 +158,7 @@ function HistoryItem({ entry, wording, now, onDelete, onOpenImage }: { entry: Qa
|
||||
</div>
|
||||
<Thumbs urls={entry.images ?? []} onOpen={onOpenImage} />
|
||||
{expanded
|
||||
? <div className="cr-markdown cr-qa-answer" dangerouslySetInnerHTML={{ __html: renderMarkdown(entry.answer, 'answer') }} />
|
||||
? <MarkdownPreview html={renderMarkdown(entry.answer, 'answer')} className="cr-qa-answer" />
|
||||
: (
|
||||
<button type="button" className="cr-qa-preview" onClick={toggle}>
|
||||
{answerPreview(entry.answer)}
|
||||
@@ -187,10 +188,10 @@ function CurrentItem({ ask, wording, onOpenImage }: { ask: Ask, wording: ThreadW
|
||||
</div>
|
||||
<Thumbs urls={ask.images ?? []} onOpen={onOpenImage} />
|
||||
{ask.text !== '' && (
|
||||
<div
|
||||
className="cr-markdown cr-qa-answer"
|
||||
data-streaming={running ? '' : undefined}
|
||||
dangerouslySetInnerHTML={{ __html: running ? renderMarkdownOnce(ask.text) : renderMarkdown(ask.text, 'answer') }}
|
||||
<MarkdownPreview
|
||||
html={running ? renderMarkdownOnce(ask.text) : renderMarkdown(ask.text, 'answer')}
|
||||
className="cr-qa-answer"
|
||||
streaming={running}
|
||||
/>
|
||||
)}
|
||||
{running && (
|
||||
|
||||
Reference in new issue
Block a user