用户将点击“编辑”按钮并将其转移到此编辑页面:
import React, { useState , useEffect } from 'react';
import EditorButton from '../../components/Button/EditorButton';
import { fetchCall } from '../../utils/testhandler';
import { setCookieTest } from '../../utils/cookieHandler';
import SaveIcon from '@mui/icons-material/Save';
import { Editor, rootCtx, defaultValueCtx } from '@milkdown/kit/core';
import { nord } from '@milkdown/theme-nord';
import { Milkdown, MilkdownProvider, useEditor } from '@milkdown/react';
import { commonmark } from '@milkdown/kit/preset/commonmark';
import { listener, listenerCtx } from '@milkdown/kit/plugin/listener';
import '@milkdown/theme-nord/style.css'
interface EditPageProps {
// title: string;
content: string;
onUpdate: any;
}
const WikiEditor: React.FC<EditPageProps> = ({ content, onUpdate }) => {
let updatedText = "";
useEditor((root) => {
return Editor
.make()
.config(ctx => {
ctx.set(rootCtx, root)
ctx.set(defaultValueCtx, content)
ctx.get(listenerCtx).markdownUpdated((ctx, markdown, prevMarkdown) => {
updatedText = markdown;
onUpdate(updatedText);
console.log(updatedText);
})
})
.config(nord)
.use(commonmark)
.use(listener);
}, []);
return <Milkdown />;
};
export const WikiEditorWrapper: React.FC = () => {
const [loading, setLoading] = useState<Boolean>(true)
const [loaded, setLoaded] = useState<number>(0);
const [body, setBody] = useState<string>("");
const [updates, setUpdates] = useState<string>("");
useEffect(() => {
setLoading(true);
const getPageContent = async () => {
const pageData = await fetchPageToEdit(1)
setBody(pageData);
// console.log(typeof pageData);
}
const setFunc = () => {
setCookieTest();
};
setLoading(false);
getPageContent();
setFunc();
console.log(body);
}, []);
useEffect(() => {
const forceUpdate = () => {
return () => setLoaded(loaded => loaded + 1);
};
forceUpdate();
}, [body]);
const fetchPageToEdit = async (pageID: Number) => {
const content = await fetchCall(`pages/${pageID}`);
const pageBody = JSON.stringify(content.body);
return pageBody;
}
if(loading) {
return (
<section>
<p>Loading...</p>
</section>
);
};
return (
<MilkdownProvider>
<EditorButton pageContent={updates} icon={<SaveIcon />} label="Save" link="/wiki/test" />
<WikiEditor content={body} onUpdate={setUpdates} />
</MilkdownProvider>
);
};
我认为您应该将关键道具添加到
以进行更新。如果它不起作用,请与我联系以进行更多调查。我需要检查EditUtton组件代码。