在 SolidJS 中渲染流式 Markdown
把收到的片段追加到 signal 中,传给 text。streaming 控制未完成语法的修复、平滑输出和末尾效果。
连接文本流
下面在挂载时接收已经解析为文本的异步迭代器。SSE 等协议的解码、请求取消和错误提示留在请求层:
每条流使用独立的组件实例。流结束时关闭 streaming,组件会显示剩余内容并关闭末尾效果。
调整输出
streaming: true 开启末尾修复、平滑输出和 scale 效果。传入对象可以分别调整:
StreamingConfig从@fluxdown/solid导入。
只想显示服务端原本的片段节奏,可以关闭 smooth。自定义 ticker 与 scheduler 的方式见 Core 流式内容。
四种末尾效果
例如,保留网络片段并逐段渐入:
effect 也接受 [名称, 配置] 或多个效果的数组,完整字段见自定义配置。可以在动画效果中查看四种效果的演示。
切换消息
同一条消息持续更新 text 即可。复用一个展示位置切换不同消息时,用消息 ID 配合 <Show keyed>,让新消息获得独立的流式状态:
when 使用稳定的消息 ID。文字追加不会改变它,因此不会反复创建组件。