3

我正在尝试按功能通过富文本输入文本。但光标会自动超出 RichText。我已经导入了需要的基本组件。我也通过 onKeyUp 而不是 onChange 尝试了它,但也没有工作。

当我在没有 ArticleContent 功能的情况下尝试它时效果很好,但在尝试使用 ArticleContent 功能时它不起作用。

看照片,这里我需要每次点击每个字符的富文本。

下面是我的代码(它不工作)

registerBlockType('vixmi-support/test', {
    title: __('Test Block'),
    icon : {
        src       : 'media-spreadsheet'
    },
    category   : 'vixmi',
    description: 'Sample desc',
    keywords   : [
        __( 'Single Article' ),
        __( 'Article' ),
    ],

    supports:{
        align : true,
        anchor: true
    },

    // custom attributes
    attributes:{
        title: {
            type    : 'string',
            source  : 'html',
            selector: 'h4',
        },
        articleLayout: {
            type   : 'string',
            default: 'left',
        }
    },


    edit: ( {attributes, setAttributes} ) => {
        const{
            title, content, buttonTitle, buttonLink, linkTarget, articleLayout
        } = attributes;

        function UpdateArticleTitle(newTitle){
            setAttributes( { title:newTitle } )
        }
        function UpdateActionLayout(event){
            setAttributes( { articleLayout:event.target.value } )
        }

        function ArticleContent(props){
            const{
                title
            } = props.attributes;
            return(
                <RichText
                    key         = "editablec"
                    tagName     = "h4"
                    placeholder = "Article title"
                    value       = { title }
                    onChange    = { UpdateArticleTitle } />
            )
        }

        return([
            <div className="sample">
                <ArticleContent attributes={ attributes }/>
            </div>
        ])
    },
    save: ( {attributes} ) => {
        const{
            title
        } = attributes;

        return(
            <div className="sample">
                <h4>{title}</h4>
            </div>
        )
    },

});
4

1 回答 1

1

我完全不确定为什么会发生这种情况,但是在自己努力解决之后,我发现做相当于{ ArticleContent( { attributes: attributes } ) }而不是<ArticleContent attributes={ attribbutes }/>解决问题。

实际的区别在于它RichText实际上并没有被组件包装,但是即使在浏览了大约一个小时的 Gutenberg 代码之后,为什么会有任何区别是我无法理解的。

于 2020-06-16T14:27:13.333 回答