如何从 Wordpress Gutenberg ColorPicker 获取颜色以正确保存?
How do I get the color from Wordpress Gutenberg ColorPicker to save correctly?
在 wordpress 中创建 Gutenberg 块类型时,我希望将颜色值保存在属性中,并且 ColorPicker 在刷新页面时以该颜色开始,但保存的颜色值似乎没有加载到页面 refresh/reload 上的 ColorPicker。如何让 ColorPicker 从保存的颜色开始?
const { registerBlockType } = wp.blocks;
const { createElement, Fragment } = wp.element;
const { InspectorControls } = wp.editor;
const { ColorPicker, PanelBody, PanelRow } = wp.components;
const { __ } = wp.i18n;
registerBlockType( 'test/colorpicker', {
title: 'ColorPicker',
category: 'layout',
description: __( 'Testing the ColorPicker' ),
icon: 'universal-access-alt',
attributes: {
color: {
type: 'array',
}
},
example: {},
edit: ( { attributes, setAttributes, className } ) => {
const { color } = attributes;
return ([
<InspectorControls>
<Fragment>
<PanelBody
title={ __('Color Picker', 'test' ) }
initialOpen={ true }
>
<PanelRow>
<ColorPicker
color={ color }
onChangeComplete={ (value) => setAttributes({color:value}) }
/>
</PanelRow>
</PanelBody>
</Fragment>
</InspectorControls>,
<div
className={ className }
style={{
height: '400px'
}}
>
</div>
])
},
//Render in PHP
save: (props) => { return null }
} );
从 ColorPicker
组件传递的值是对象而不是数组,因此您的编辑功能无法正确接收它。这也让我感到困惑。控制台从 ColorPicker 的 onChangeComplete
函数记录 value
会给你一个提示。
您需要在注册您的块时更改属性规范,如下所示:
attributes: {
color: {
type: 'object' // <== Not 'array'
}
}
希望对您有所帮助!
在 wordpress 中创建 Gutenberg 块类型时,我希望将颜色值保存在属性中,并且 ColorPicker 在刷新页面时以该颜色开始,但保存的颜色值似乎没有加载到页面 refresh/reload 上的 ColorPicker。如何让 ColorPicker 从保存的颜色开始?
const { registerBlockType } = wp.blocks;
const { createElement, Fragment } = wp.element;
const { InspectorControls } = wp.editor;
const { ColorPicker, PanelBody, PanelRow } = wp.components;
const { __ } = wp.i18n;
registerBlockType( 'test/colorpicker', {
title: 'ColorPicker',
category: 'layout',
description: __( 'Testing the ColorPicker' ),
icon: 'universal-access-alt',
attributes: {
color: {
type: 'array',
}
},
example: {},
edit: ( { attributes, setAttributes, className } ) => {
const { color } = attributes;
return ([
<InspectorControls>
<Fragment>
<PanelBody
title={ __('Color Picker', 'test' ) }
initialOpen={ true }
>
<PanelRow>
<ColorPicker
color={ color }
onChangeComplete={ (value) => setAttributes({color:value}) }
/>
</PanelRow>
</PanelBody>
</Fragment>
</InspectorControls>,
<div
className={ className }
style={{
height: '400px'
}}
>
</div>
])
},
//Render in PHP
save: (props) => { return null }
} );
从 ColorPicker
组件传递的值是对象而不是数组,因此您的编辑功能无法正确接收它。这也让我感到困惑。控制台从 ColorPicker 的 onChangeComplete
函数记录 value
会给你一个提示。
您需要在注册您的块时更改属性规范,如下所示:
attributes: {
color: {
type: 'object' // <== Not 'array'
}
}
希望对您有所帮助!