获得徽章 9
前端开发
十分钟看懂 vue3.6 要引入的 alien signals 依赖收集和依赖触发原理,甚至被alien-signals作者Johnson点赞了[看]
juejin.cn
淋着141于2025-04-08 16:13发布的图片
评论
如何增量地将 markdown 转换成 html?
现在后台是流式输出 markdown 字符串,并且每次我也不断处理全量的 markdown 字符串,再使用MarkdownContent这个组件去渲染成 html,就是这个dangerouslySetInnerHTML={{ __html: html }}去全量更新

但这样会导致一个问题,就是在流式输出的过程中,由于会不断地执行这个MarkdownView组件,导致无法使用鼠标选中渲染后的文本,因为在下次 re-render 时,这个dom已经不存在了,选中状态就又丢失了!

不过我看了下像chatgpt或者deepseek的markdown渲染,就是可以的,审查他的markdown,应该是增量更新的

我后面研究了下,自己写了个markdown的parser,但我觉得通过重新写一个parser去实现这个需求,工作量太大,有什么成熟的方案吗

github: github.com

live demo: linzhe141.github.io
展开
淋着141于2025-03-04 09:58发布的图片
淋着141于2025-03-04 09:58发布的图片
评论
react新手对于react input onChange 的疑惑,为什么input的onChange不支持异步,我没有在文档找到相关描述
```jsx
function App() {
const [input, setInput] = useState('')
const [input1, setInput1] = useState('')
return (
<div>
<input
value={input}
onClick={async (e) => {
await new Promise((resolve) => setTimeout(resolve, 100))
setInput('e.target.value')
}}
></input>
<input
value={input1}
onChange={async (e) => {
await new Promise((resolve) => setTimeout(resolve, 100))
setInput1(e.target.value)
}}
></input>
</div>
)
}```

codepen.io
展开
淋着141于2025-01-13 10:37发布的图片
评论
看来react源码,第一次才知道还能这么写
淋着141于2025-01-10 17:58发布的图片
8
前端开发
下一页
个人成就
文章被点赞 48
文章被阅读 8,888
掘力值 482
收藏集
0
关注标签
0
加入于