Gutenberg-在Post保存/更新操作上调度操作或setAttributes(),而不是在onChange侦听器上

时间:2021-05-28 作者:Siddharth Thevaril

使用时,我需要将最多8种用户选择的自定义颜色添加到默认选项列表中Colour Palette.

我已经注册了一个保存自定义颜色的元数据。

Problem:

我想保存自定义颜色;更新(&Q);按下post按钮,而不是使用onChange 侦听器,因为当拖动颜色选择器工具时,侦听器会多次激发。

我现在正在做什么:

const { isSavingPost } = useSelect( select => {
    const { isSavingPost } = select( \'core/editor\' );

    return {
        isSavingPost: isSavingPost(),
    }
} );

useEffect( () => {
    if ( isSavingPost ) {
        // Logic to save custom colours.
        setAttributes( { customColors } );
    }
}, [ isSavingPost ] );
问题是当setAttribute() 在以下情况下调用;更新(&Q);按下后,状态在帖子保存后更新,古腾堡认为这是脏的,并在;更新(&Q);显示以下内容:

enter image description here

但是,如果我按“我可以保存它”;更新(&Q);发布两次,但这对最终用户不可行。

有什么办法我可以开火吗wp.data.dispatch( \'core/editor\' ).editPost()setAttributes() 当通过按“";更新(&Q);按钮

1 个回复
SO网友:Lovor

只有在onChange中传递的值与中传递的值不同时,才能使用onChange侦听器并执行setAttributesattributes.customColors. 这是一个if 而且不应该对表现造成太大的惩罚。