useVisualEdit
Custom Visual editing components
Sometimes you may want to add new visual editing components beyond the predefined Text, RichText, Image, or File.
For instance, you might want to create a code editor (like the one found in React Bricks UI blocks) or a canvas where editors can draw.
The useVisualEdit
hook allows you to create a custom visual editing component that reads from a block property and saves back to that property.
Usage Example
const [value, setValue, isReadOnly] = useVisualEdit('my-prop')
if (isReadOnly) { // Here we are on the frontend return ( <div>{value}</div> )}
// Here we are in the content administration interfacereturn ( <MyEditorComponent value={value} onChange={setValue}>)
Hook Definition
const useVisualEdit = ( propName: string): [any, (value: any) => void, boolean]
The useVisualEdit
hook takes a propName as argument and returns a [value, setValue, isReadOnly]
array.
You can use value
, setValue
, and isReadOnly
to create your editing component:
value
is the value of the propsetValue
function that accepts a value as argument and sets the prop accordinglyisReadOnly
is true in the frontend and Preview mode, while false in the Admin Editor