如何覆盖组件的道具?

How to override the props of a component?

我无法覆盖 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
);

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

下一行:

props.disableMediaButtons = true;

应该改为:

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