reactjs TinyMCE React将自定义组件添加到工具栏

hwazgwia  于 2023-02-22  发布在  React
关注(0)|答案(2)|浏览(150)
    • bounty将在5天后过期**。回答此问题可获得+500声望奖励。badcoder希望引起更多人对此问题的关注:需要更多的注意这个问题。一个答复,已提供了这个问题没有正确回答它不幸

在React中创建TinyMCE编辑器时,可以使用以下代码向工具栏添加自定义按钮:

<Editor
...
init={{
    ...
    setup: (editor) => {
        editor.ui.registry.addButton('test' {
            text: 'Test',
            onAction: () => console.log('Test')
        });
    }
}}
/>

除了addButton之外,还有addIconaddMenuItemaddSidebar等选项,但是我不知道如何包含我自己的自定义组件。
假设我想添加一个非常简单的div/组件

<div>
    <ul>
        <li>Test 1</li>
        <li>Test 2</li>
    </ul>
</div>

<TestComponent />

到工具栏的末尾,我该怎么做呢?
有什么想法吗?

7ivaypg9

7ivaypg91#

official website
official Github
您可以尝试在website或Github中按关键字搜索以探索更多示例或测试。
这是你需要的东西。

添加按钮

1.通过registry.addButton注册,在onAction中编写您特性,例如insertContent。
1.添加您在工具栏中注册的名称,以空格分隔,例如:

toolbar: 'undo redo addTestList'
init={{
  toolbar: 'addTestList',
  setup: function (editor) {

    editor.ui.registry.addButton('addTestList', {
      text: 'addTestList',
      onAction: function (_) {
        editor.insertContent(`<div>
        <ul>
            <li>Test 1</li>
            <li>Test 2</li>
        </ul>
    </div>`);
      }
    });
  },
}}

添加图标

1.注册你的自定义图标。
1.在其他api配置中使用图标:"your-custom-icon",例如addButton。

init={{
  toolbar: 'addTestList undo',
  setup: function (editor) {
    editor.ui.registry.addIcon('addTestListIcon', '<svg height="24" width="24"><path d="M12 0 L24 24 L0 24 Z" /></svg>');

    editor.ui.registry.addButton('addTestList', {
        icon: "addTestListIcon",
        onAction: function (_) {
          editor.insertContent(`<div>
              <ul>
                  <li>Test 1</li>
                  <li>Test 2</li>
              </ul>
          </div>`);
        }
    });
  },
 }}

添加菜单项

1.安装程序中的注册表菜单项。
1.设置菜单为自定义
1.在菜单栏中使用自定义菜单

init={{
  menu: {
    custom: {
      title: "Custom",
      items: "myCustomMenuItem"
    }
  },
  menubar: "custom",
  setup: function (editor) {
    editor.ui.registry.addMenuItem("myCustomMenuItem", {
      text: "My Custom Menu Item",
      onAction: function () {
        editor.insertContent('<input type="checkbox">Hello</input>');
      }
    });
  },
 }}

添加边栏

init={{
  toolbar: 'mysidebar undo',
  setup: function (editor) {
    editor.ui.registry.addSidebar('mysidebar', {
      tooltip: 'My sidebar',
      icon: 'comment',
      onShow: (api) => {
        api.element().innerHTML = 'Hello world!';
      },
    });
  },
 }}
oxcyiej7

oxcyiej72#

您需要将键test添加到init对象的toolbar属性中

<Editor
    init={{
        toolbar: "test",
        setup: (editor) => {
            editor.ui.registry.addButton('test' {
                text: 'Test',
                onAction: () => console.log('Test')
            });
        }
    }}
/>

相关问题