如何使用WordPress<LinkControl/>组件

时间:2020-08-18 作者:wbq

我正在寻找一种方法add linking functionality to a custom block 并找到了满足这一需求的不同方法。

有:

URLInputButton Component

  • URLInput Component
  • LinkControl Component
  • URLPopover Component
  • 我通过前两个组件获得了它:

    const {URLInputButton, URLInput, URLPopover} = wp.blockEditor;
    
    registerBlockType(\'my-plugin-domain/textlink\', {
        title: __(\'Text Link\', \'my-textdomain\'),
        
        ...
    
        attributes: {
            url: {
                type: \'string\',
            },
        },
    
        edit(props) {
    
            const {
                attributes,
                setAttributes,
            } = props;
    
            const {url} = attributes;
    
            const blockControls = (
                !!isSelected && (
                    <BlockControls>
                        <Toolbar>
                            <URLInputButton
                                url={url}
                                onChange={(url, post) => setAttributes(
                                        {url, title: (post && post.title) || __(\'Click here\')},
                                    )}
                                />
    
                            <URLInput
                                className={className}
                                value={url}
                                onChange={(url, post) => setAttributes(
                                        {url, text: (post && post.title) || \'Click here\'})}
                                />
                        </Toolbar>
    
        }
        ...
    
    
    });
    
    不幸的是URLInput 以及URLInputButton 显得displaced/buggy 输入链接时。

    因此,我试图找出一种方法来使用LinkControl 我无法让它工作。我甚至无法确定它必须从哪个软件包中导入。

    const {LinkControl} = wp.blockEditor; // This doesn\'t seem to work 
    
    
    const {LinkControl} = wp.components; // Neither this
    
    ...
    
    // This is not working:
    
    edit(props){
     ...
     <LinkControl
        onChange={(nextValue) => {
        console.log(nextValue);
        }}
     />
    ...
    }
    
    ...
    
    
    我也没能拿到URLPopover 工作。

    如果有人能给我指出正确的方向,我将不胜感激!

    2 个回复
    最合适的回答,由SO网友:fluoriteen 整理而成

    LinkControl是一个实验性组件,因此在blockEditor包中的声明有所不同

    尝试将此作为导入语句,这对我很有用:

    const {__experimentalLinkControl } = wp.blockEditor;
    const LinkControl = __experimentalLinkControl;
    

    SO网友:Cláudio Esperança

    继续@fluoriteen回答:您可以使用别名非结构化变量赋值来进行单行赋值:

    const {__experimentalLinkControl: LinkControl} = wp.blockEditor;
    

    相关推荐