You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Quill重渲染时消失,添加图片上传handler后触发该问题

React Quill编辑器重渲染消失问题排查与修复

问题根源

每次组件重渲染时,你定义的modules对象都会被重新创建一个新的引用——哪怕imageHandler用了useCallback缓存,但整个modules的内存地址发生了变化。React Quill组件会把modules的变化识别为「需要完全重建编辑器实例」,旧编辑器被销毁后,新实例初始化前就会出现编辑器「消失」的现象。

你之前给组件加唯一key没用,因为key是用来管理列表中组件的复用逻辑,这里是单个组件的props引用变化触发的重建,key解决不了这个问题。

修复方案

用useMemo把modules整个缓存起来,只有当它的依赖项(也就是imageHandler)变化时才重新生成:

const modules = useMemo(() => ({
  toolbar: {
    container: [
      [{ header: [1, 2, 3, 4, 5, 6, false] }],
      ["bold", "italic", "underline", "strike", "blockquote"],
      [{ list: "ordered" }, { list: "bullet" }],
      ["link", "image"],
      ["code-block"],
      [
        {
          color: ["#000000", ...],
        },
        {
          background: ["#000000", ...],
        },
      ],
      ["clean"],
    ],
    handlers: {
      image: imageHandler,
    },
  },
  clipboard: {
    matchVisual: false,
  },
}), [imageHandler]);

这样modules的引用在imageHandler不变的情况下会保持稳定,React Quill就不会频繁销毁重建编辑器了。

内容的提问来源于stack exchange,提问作者ksquare

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 01:33:34