管理中未定义的WordPress<LinkControl/>值

时间:2021-07-01 作者:Thad

我试图在我的WordPress插件中创建一个基本的链接控件,但我无法让它正常工作。我已经在这里阅读了之前的答案,但仍然有一些问题。我还查看了Github上的块编辑器组件文档,但该示例还不足以解决我的问题。以下是我的属性代码:

const attributes = {
    linkText: {
        type: \'string\',
        \'selector\': \'.hero-image__button\',
        default: \'\'
    },
    linkURL: {
        type: \'string\',
        selector: \'.hero-image__button\',
        default: \'\'
    }
};

export default attributes;

以下是我的编辑功能的代码:

import { TextControl } from \'@wordpress/components\';
import { __experimentalLinkControl as LinkControl } from \'@wordpress/block-editor\';

export default function Edit ( { attributes: { linkURL, LinkText }, setAttributes } ) {

    const handleLinkChange = ( value ) => {
        setAttributes( {
            linkURL: value.url
        } );
    };

    return (
        <>
            <TextControl
                value={ linkText }
                onChange={ ( linkText ) => setAttributes( { linkText } ) }
            />
            <LinkControl
                onChange={ handleLinkChange }
                value={ linkURL }                           
            />
        </>
    );

}

以下是我的保存功能的代码:

export default function Save ( { attributes: { linkURL, linkText } } ) {

    return (
        <a className=\'hero-image__button\' href={ linkURL }>{ linkText }</a>
    );

}
一切都保存得很好,前端看起来与预期一样。问题发生在管理中。输入URL后,该字段的值始终出现;未定义;。以下是我得到的截图:

enter image description here

重新加载管理页面时,链接控制字段将完全重置,即使linkURL值持续存在:

enter image description here

任何帮助都将不胜感激!

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

你的value 道具格式错误。从…起<LinkControl>\'s README:

value

Object
  • 必需:无当前链接值。

    链接value 由默认链接属性值和任何自定义链接值之间的并集组成settings.

    生成的默认属性value 包括:

    • url (string): 链接URL
    • title (string, 可选):链接标题
    • opensInNewTab (boolean, 可选):是否应在新浏览器选项卡中打开链接。仅当不提供自定义settings 道具
    如果链接的实际标题(&U)"E;OpenSinewTab“;属性与您的目的相关,那么您应该将整个值存储在handleLinkChange() 作用否则,请指定linkText 属性应足够。如自述文件中所述,您还可以指定settings 道具以抑制;在新选项卡中打开;切换(或添加其他切换):

                <LinkControl
                    onChange={ handleLinkChange }
                    value={ { url: linkURL, title: linkText } }   
                    settings={ [] }    
                />
    

  • 相关推荐