首页 > 解决方案 > 如何覆盖组件的道具?

问题描述

我无法覆盖 MediaPlaceholder 组件的道具。作为测试,我只是尝试将 disableMediaButtons 属性设置为 true,但它的值不会改变并且没有错误消息。

这是我尝试过的代码:

const MyMediaPlaceholder = createHigherOrderComponent( (MediaPlaceholder) => {
    return (props) => {
        props.disableMediaButtons = true;
        console.log(props);
        return wp.element.createElement(
            MediaPlaceholder,
            props,
        );
    };
}, 'MyMediaPlaceholder' );

addFilter(
    'editor.MediaPlaceholder',
    'my/MediaPlaceholder',
    MyMediaPlaceholder
);

标签: wordpresswordpress-gutenberggutenberg-blocks

解决方案


我找到了覆盖道具的方法,所以我分享它。道具不能直接被覆盖,所以我使用Object.assign()来做。

以下行:

props.disableMediaButtons = true;

应该改为:

props = Object.assign({}, props, { disableMediaButtons: true });

推荐阅读