我正在集成下拉式Web构建器与react和grapesjs,但在初始化grapesjs时出错
这是编辑器组件
import React, { useEffect, useState } from "react";
import { useParams } from "react-router-dom";
import axios from "axios";
import { useSelector } from "react-redux";
import { API_HOST } from "./api_utils";
import Sidebar from "./components/Sidebar";
import TopNav from "./components/TopNav";
import geditorConfig from "./api_utils/geditor_config";
import PageSection from "./components/PageSection";
const Editor = () => {
const [editor, setEditor] = useState(null);
const [assets, setAssets] = useState([]);
const { pageId } = useParams();
const { pageStore } = useSelector((state) => state);
const { pages } = pageStore;
useEffect(() => {
async function getAllAssets() {
try {
const response = await axios.get(`${API_HOST}assets/`);
setAssets(response.data);
} catch (error) {
setAssets(error.message);
}
}
getAllAssets();
}, []);
useEffect(() => {
const editor = geditorConfig(assets, pageId); // Getting error at this line
setEditor(editor);
}, [pageId, assets]);
return (
<div className="App">
<div
id="navbar"
className="sidenav d-flex flex-column overflow-scroll position-fixed"
>
<nav className="navbar navbar-light">
{/* <div className="container-fluid">
<span className="navbar-brand mb-0 h3 logo">Code Dexterous</span>
</div> */}
</nav>
<PageSection pages={pages} />
<Sidebar />
</div>
<div
className="main-content position-relative w-85 start-15"
id="main-content"
>
<TopNav />
<div id="editor"></div>
</div>
</div>
);
};
下面是我的geditorConfig方法
const geditorConfig = (assets, pageId) => {
$(".panel__devices").html("");
$(".panel__basic-actions").html("");
$(".panel__editor").html("");
$("#blocks").html("");
$("#styles-container").html("");
$("#layers-container").html("");
$("#trait-container").html("");
// Content for Preview
const navbar = $("#navbar");
const mainContent = $("#main-content");
const panelTopBar = $("#main-content > .navbar-light");
const editor = grapesjs.init({ // GETTING ERROR HERE
container: "#editor",
blockManager: {
appendTo: "#blocks",
},
styleManager: styleManager,
layerManager: layerManager,
traitManager: traitManager,
selectorManager: selectorManager,
panels: panels,
deviceManager: deviceManager,
assetManager: { assets: assets, upload: false },
storageManager: storageSetting(pageId),
canvas: {
styles: styles,
scripts: scripts,
},
plugins: [
tailwindComponent,
gjsBlockBasic,
swiperComponent,
grapesjsBlockBootstrap,
grapesjsPluginExport,
grapesjsStyleBg,
chartLibComponent,
],
pluginsOpts: {
tailwindComponent: {},
gjsBlockBasic: {},
swiperComponent: {},
grapesjsBlockBootstrap: {},
grapesjsPluginExport: {},
grapesjsStyleBg: {},
chartLibComponent: {},
},
});
addEditorCommand(editor);
editor.on("run:preview", () => {
console.log("It will trigger when we click on preview icon");
// This will be used to hide border
editor.stopCommand("sw-visibility");
// This will hide the sidebar view
navbar.removeClass("sidebar");
// This will make the main-content to be full width
mainContent.removeClass("main-content");
// This will hide top panel where we have added the button
panelTopBar.addClass("d-none");
});
editor.on("stop:preview", () => {
// This event is reverse of the above event.
console.log("It will trigger when we click on cancel preview icon");
editor.runCommand("sw-visibility");
navbar.addClass("sidebar");
mainContent.addClass("main-content");
panelTopBar.removeClass("d-none");
});
editor.on("component:selected", (component) => {
const newTool = {
icon: "fa fa-plus-square",
title: "Check Toolbar",
commandName: "new-tool-cmd",
id: "new-tool",
};
const defaultToolbar = component.get("toolbar");
const checkAlreadyExist = defaultToolbar.find(
(toolbar) => toolbar.command === newTool.commandName
);
if (!checkAlreadyExist) {
defaultToolbar.unshift({
id: newTool.id,
attributes: { class: newTool.icon, title: newTool.title },
command: newTool.commandName,
});
component.set("toolbar", defaultToolbar);
}
});
setTimeout(() => {
let categories = editor.BlockManager.getCategories();
categories.each((category) => category.set("open", false));
}, 2000);
return editor;
};
This is the error i am getting
我正在尝试整合网站建设者和使用mongodb来存储所有创建的网页,什么网页id是我渲染存储的内容,编辑上一页,并在主页上添加功能,以添加新的网页
1条答案
按热度按时间2vuwiymt1#
这对我很有效