Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs Gutenberg RichText自定义块属性&引用;阵列&;“儿童”;或;弦乐;HTML";?_Reactjs_Wordpress_Wordpress Gutenberg_Gutenberg Blocks - Fatal编程技术网

Reactjs Gutenberg RichText自定义块属性&引用;阵列&;“儿童”;或;弦乐;HTML";?

Reactjs Gutenberg RichText自定义块属性&引用;阵列&;“儿童”;或;弦乐;HTML";?,reactjs,wordpress,wordpress-gutenberg,gutenberg-blocks,Reactjs,Wordpress,Wordpress Gutenberg,Gutenberg Blocks,我正在尝试使用“RichText”创建动态自定义块,并想知道如何设置它的属性。 通过检查互联网上的示例,有些人将其属性设置为“Array&Children”,但我也发现了带有“HTML&Class Name”的示例 我尝试了两种模式(下面的模式A和B),但它们在前端的结果完全相同。 我想知道它们之间的区别以及哪种方法更好 模式A attributes: { message: { type: 'array', source: 'children',

我正在尝试使用“RichText”创建动态自定义块,并想知道如何设置它的属性。 通过检查互联网上的示例,有些人将其属性设置为“Array&Children”,但我也发现了带有“HTML&Class Name”的示例

我尝试了两种模式(下面的模式A和B),但它们在前端的结果完全相同。 我想知道它们之间的区别以及哪种方法更好

模式A

attributes: {
    message: {
        type: 'array',
        source: 'children',
        selector: '.message',
    }
},

模式B

attributes: {
    message: {
        type: 'string',
        source: 'html',
        selector: '.message',
    }
},

编辑和保存功能

edit: props => {
    const {attributes:{message}, className, setAttributes} = props;
    const onChangeMessage = message => {
        setAttributes({message});
    }
    return(
        <div className={ className }>
            <RichText
                tagName = "div"
                multiline = "p"
                onChange = {onChangeMessage}
                value = {message}
            />
        </div>
    );
},
save: props => {
    const {attributes:{message}} = props;
    return (
        <div>
            <div class="message">
                <RichText.Content
                    value = {message}
                />
            </div>
        </div>
    );

},

edit:props=>{
const{attributes:{message},className,setAttributes}=props;
const onChangeMessage=message=>{
setAttributes({message});
}
返回(
);
},
保存:道具=>{
常量{属性:{message}}=props;
返回(
);
},

属性源用于定义如何从保存的帖子内容中提取块属性值。它们提供了一种从保存的标记映射到块的JavaScript表示的机制

Gutenberg使用属性和属性源解析HTML并从中提取数据。为了做到这一点,古腾堡利用了,这是一个帮助器,可以精确地进行这种解析。每个源属性描述一个不同于hpq的函数,用于解析HTML块

这些属性被传递到“保存和编辑”功能

属性源取决于您的用例:

html:html源将从标记返回innerHTML

子节点:使用children源属性将DOM节点作为子节点数组返回

children属性更灵活,可以从块中提取复杂的HTML并对其进行编辑,大多数情况下,这是必须的 使用。


你可以看看另一个,也可以参考这个,我仍然不知道什么时候使用类型数组和类型stringwith children属性使用类型数组