<Frame />
Component
Frame defines the editable area in your page editor. It is rendered based on the editor's internal state (i.e. Nodes).
const { connectors, setProp, ...collected } = useNode(collector);
#
Reference#
PropsBoth props specifies the initial screen to render. You must specify at least one of them (data
takes precendence over children
).
children?
React.ReactElementCreates the initial screen using React Elements. The element defined here will be the Root Nodedata?
SerializedNodes | stringLoads the initial nodes from SerializedNodes (can be supplied in JSON)
These props are memoized - after the initial render, changes to these props will have no effect. If for example, you wish to load a different set of serialised JSON nodes after the initial render, you may use the
deserialize
method via theuseEditor
hook.
#
Examples#
With JSXimport {Editor, Frame, Element} from "@craftjs/core";
const App = () => { return ( <div> <h2>My App!</h2> <Editor> <h2>My Page Editor</h2> <Frame> <Element is={Container} canvas> // defines the Root Node <h2>Drag me around</h2> <MyComp text="You can drag me around too" /> <Element is="div" style={{background: "#333" }}> <p>Same here</p> </Element> </Element> </Frame> </Editor> </div> )}
#
Loading from serialized Nodesimport {Editor, Frame, Element} from "@craftjs/core";
const App = () => { return ( <div> <h2>My App!</h2> <Editor> <h2>My Page Editor</h2> <Frame data='{"ROOT":{"type":"div","isCanvas":true,"props":{},"parent":null,"displayName":"div","custom":{},"nodes":["node-sdiwzXkvQ","node-rGFDi0G6m","node-yNBLMy5Oj"]},"node-sdiwzXkvQ":{"type":{"resolvedName":"Card"},"props":{},"parent":"ROOT","displayName":"Card","custom":{},"_childCanvas":{"main":"canvas-_EEw_eBD_","second":"canvas-lE4Ni9oIn"}}' > <Element is={Container} canvas> // defines the Root Node <h2>Drag me around</h2> <MyComp text="You can drag me around too" /> <Element is="div" style={{background: "#333" }}> <p>Same here</p> </Element> </Element> </Frame> </Editor> </div> )}