我正在尝试让wordpress块编辑器加载到一个react项目:https://www.npmjs.com/package/@wordpress/block-editor .
我已经完全按照npm页面上的例子设置了它,但是它给出了一个无效的钩子错误。我想也许是因为错误建议的版本不匹配?
这是密码:
import {
BlockEditorProvider,
BlockList,
WritingFlow,
ObserveTyping
} from "@wordpress/block-editor";
import { SlotFillProvider, Popover } from "@wordpress/components";
import { useState } from "@wordpress/element";
import "@wordpress/components/build-style/style.css";
import "@wordpress/block-editor/build-style/style.css";
export default function MyEditorComponent() {
const [blocks, updateBlocks] = useState([]);
return (
<BlockEditorProvider
value={blocks}
onInput={(blocks) => updateBlocks(blocks)}
onChange={(blocks) => updateBlocks(blocks)}
>
<SlotFillProvider>
<Popover.Slot name="block-toolbar" />
<WritingFlow>
<ObserveTyping>
<BlockList />
</ObserveTyping>
</WritingFlow>
<Popover.Slot />
</SlotFillProvider>
</BlockEditorProvider>
);
}
典型的钩子错误:
Error
Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
See [link] for tips about how to debug and fix this problem.
我已经设置了一个codepen来在这里输入:https://codesandbox.io/s/sleepy-proskuriakova-op59q
我查了wordpress版本的react,它似乎是16.6.3,所以在沙箱中设置,并使用了旧版本的react脚本(2.1.8),当时使用的是16.6.2,但没有错误的变化。我尝试了几个版本的组合没有变化。
导致这个错误的原因是什么?我怎样才能加载这个组件?
2条答案
按热度按时间h7appiyu1#
这是一个可以正常工作的codesandbox。
我改变的事情:
1.将
react
和react-dom
更改为16.13.1
,后者是@wordpress/element
中使用的版本1.必须添加
DropZoneProvider
1.安装
@wordpress/block-library
并调用registerCoreBlocks
要了解更多代码示例,您可以查看the official storybook docs,源代码位于
Story
选项卡下的底部面板中。ibps3vxo2#
在我的保存函数里我放了
我应该把
这就是为什么我们应该仔细阅读文档!