我正在尝试使用来自 API 调用的响应填充富文本编辑器 ( tiptap.dev )。setEditorContent
在使用数据负载调用钩子后,编辑器内容应该更新。我注意到当我修改本地文件并保存它时,API 数据在 DOM 中呈现(但不是在初始页面加载时)。
export default function EditHandbook() {
const router = useRouter();
const user = useUser();
const { query } = useRouter();
const [loading, setLoading] = useState(true);
const [editorContent, setEditorContent] = useState(null);
// Get handbook by ID
const id = query.id;
let handbookText = null;
function loadDataOnlyOnce() {
axios
.get("/api/templater/" + id + "/")
.then((res) => {
handbookText = res.data.handbookContent; // the object returned from api/templater/[id].js
})
.finally(() => {
setEditorContent(handbookText);
setLoading(false);
})
.catch((err) => console.log(err));
}
useEffect(() => {
loadDataOnlyOnce();
}, [id]); // only run once, after id is resolved from router on page load
const editor = useEditor({
extensions: [StarterKit],
onUpdate({ editor }) {
setEditorContent(editor.getHTML());
},
content: editorContent,
});
return (
<div>
<TextEditorMenubar editor={editor} />
<EditorContent editor={editor} />
</div>
);
}