gpt4 book ai didi

javascript - TinyMCE 自托管 React

转载 作者:行者123 更新时间:2023-12-03 14:52:30 24 4
gpt4 key购买 nike

我正在尝试使用 react 创建一个简单的自托管 TinyMCE。目前我的项目只是显示一个简单的文本区域,没有工具栏或任何样式。我认为集成tinymce 的一个好方法是使用模块加载器。我读到 react 已经通过使用 npx create-react-app 包含 webpack。

Projectstructor
root
|-public
|-skins
|-src
|-App.js
|-TinyEditorComponent.js
|-webpack.config.js
我一步一步做了什么:
  • npx 创建 react 应用程序我的应用程序
  • $ npm install --save @tinymce/tinymce-react
  • cp -r node_modules/tinymce/skins 皮肤
  • 创建文件 webpack.config.js

  • const config = {
    module: {
    loaders: [
    {
    test: require.resolve("tinymce/tinymce"),
    loaders: ["imports?this=>window", "exports?window.tinymce"],
    },
    {
    test: /tinymce\/(themes|plugins)\//,
    loaders: ["imports?this=>window"],
    },
    ],
    },
    };

    文本编辑器组件:
    import React, { Component } from "react";

    // Import TinyMCE
    import tinymce from "tinymce/tinymce";

    // Default icons are required for TinyMCE 5.3 or above
    import "tinymce/icons/default";

    // A theme is also required
    import "tinymce/themes/silver";

    // Any plugins you want to use has to be imported
    import "tinymce/plugins/paste";
    import "tinymce/plugins/link";

    class TinyEditorComponent extends Component {
    constructor() {
    super();
    this.state = { editor: null };
    }

    componentDidMount() {
    tinymce.init({
    selector: `#${this.props.id}`,
    skin_url: `./skins/content/dark`,
    plugins: [
    "advlist autolink lists link image charmap print preview anchor",
    "searchreplace visualblocks code fullscreen",
    "insertdatetime media table paste code help wordcount",
    ],
    toolbar: "undo redo | formatselect | bold italic backcolor |",
    setup: editor => {
    this.setState({ editor });
    editor.on("keyup change", () => {
    const content = editor.getContent();
    this.props.onEditorChange(content);
    });
    },
    });
    }

    componentWillUnmount() {
    tinymce.remove(this.state.editor);
    }

    render() {
    return (
    <textarea
    id={this.props.id}
    value={this.props.content}
    onChange={e => console.log(e)}
    />
    );
    }
    }

    export default TinyEditorComponent;
    我不确定如何为 tinymce 覆盖和配置 webpack,有很多旧方法,但什么是正确的。通过注入(inject) webconfig?

    最佳答案

    理想情况下,您应该使用自己的 ReactComponent。
    这个答案需要来自 https://www.tiny.cloud/docs/integrations/react/ 的知识
    您应该安装组件 @tinymce/tinymce-react通过npmyarn以您的喜好为准。一旦你安装了你导入编辑器

    import { Editor } from '@tinymce/tinymce-react';
    然后你可以像这样使用它
    <Editor
    initialValue="<p>This is the initial content of the editor</p>"
    init={{
    height: 500,
    menubar: false,
    plugins: [
    'advlist autolink lists link image charmap print preview anchor',
    'searchreplace visualblocks code fullscreen',
    'insertdatetime media table paste code help wordcount'
    ],
    toolbar:
    'undo redo | formatselect | bold italic backcolor | \
    alignleft aligncenter alignright alignjustify | \
    bullist numlist outdent indent | removeformat | help'
    }}
    />
    然后将您的 TinyMCE 自托管副本添加到您的公共(public)文件夹。
    编辑公用文件夹中的 index.html 并在您的 <head> 中添加以下内容标签
    <script src="tinymce.min.js"></script>

    关于javascript - TinyMCE 自托管 React,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64943901/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com