trumbowyg反应输入数据键入反向顺序

发布于 2025-02-11 14:36:09 字数 498 浏览 3 评论 0原文

我现在将Trumbowyg编辑器集成到React Project中。

const [content, setContent] = useState();

return (
    <Trumbowyg
        onChange={e => setContent(e.target.innerHTML)}
        data={content}
    />
)

但是对于每个按键事件,光标都会移至起始位置,因此内容会逆转

https://i.sstatic.net/iza0j.png“ alt =“在此处输入图像说明”>

我键入“ start”,但它们的顺序是相反的,您会看到。

I'm now integrating Trumbowyg editor into react project.

const [content, setContent] = useState();

return (
    <Trumbowyg
        onChange={e => setContent(e.target.innerHTML)}
        data={content}
    />
)

But for every keypress event, the cursor moves to the start position, so the content becomes reversed

enter image description here

I typed "start", but they are in reversed order, you see.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

潇烟暮雨 2025-02-18 14:36:10

RichTexteditor.js

import React, { useEffect, useState } from "react";
import 'react-trumbowyg/dist/trumbowyg.min.css'
import dynamic from "next/dynamic";

const Trumbowyg = dynamic(import("react-trumbowyg"),
  {
    ssr: false,
  }
);


export default ({ initialHtml, onChange }) => {
  const [value, setValue] = useState("");

  useEffect(() => {
    console.log({initialHtml})
    if (value) return;
    setValue(initialHtml);
  }, [initialHtml])

  const onHtmlChange = (html) => {
    onChange(html);
  }

  return (
    <Trumbowyg
      id='react-trumbowyg'
      data={value}
      // dir="ltr"
      onChange={(e) => { onHtmlChange(e.target.innerHTML) }}
      buttons={
        [

          // ['viewHTML'],
          // ['formatting'],
          ['strong', 'em', 'del'],
          ['superscript', 'subscript'],
          ['link'],
          // ['image'], // Our fresh created dropdown
          ['justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull'],
          ['unorderedList', 'orderedList'],
          ['horizontalRule'],
          ['removeformat'],
          ['fullscreen']
        ]
      }
    />
  )
}

只是复制和使用!

nb:我在这里使用了Next.js

RichTextEditor.js

import React, { useEffect, useState } from "react";
import 'react-trumbowyg/dist/trumbowyg.min.css'
import dynamic from "next/dynamic";

const Trumbowyg = dynamic(import("react-trumbowyg"),
  {
    ssr: false,
  }
);


export default ({ initialHtml, onChange }) => {
  const [value, setValue] = useState("");

  useEffect(() => {
    console.log({initialHtml})
    if (value) return;
    setValue(initialHtml);
  }, [initialHtml])

  const onHtmlChange = (html) => {
    onChange(html);
  }

  return (
    <Trumbowyg
      id='react-trumbowyg'
      data={value}
      // dir="ltr"
      onChange={(e) => { onHtmlChange(e.target.innerHTML) }}
      buttons={
        [

          // ['viewHTML'],
          // ['formatting'],
          ['strong', 'em', 'del'],
          ['superscript', 'subscript'],
          ['link'],
          // ['image'], // Our fresh created dropdown
          ['justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull'],
          ['unorderedList', 'orderedList'],
          ['horizontalRule'],
          ['removeformat'],
          ['fullscreen']
        ]
      }
    />
  )
}

Just copy and use!

NB: I've used Next.js here

倒数 2025-02-18 14:36:09

您无需将内容传递给trumbowyg,只需删除它

<Trumbowyg
        onChange={e => setContent(e.target.innerHTML)}
/>

You dont need to pass content to Trumbowyg, just remove it

<Trumbowyg
        onChange={e => setContent(e.target.innerHTML)}
/>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文