存储()函数中的Gutenberg getBlockIndex

时间:2022-01-08 作者:CyberJ

在我的街区edit() 函数我得到每个内部块的索引:

// a block used in innerblocks
edit( { attributes, setAttributes, clientId } ) {

    let blockIndex = wp.data.select( \'core/editor\' ).getBlockIndex( clientId );
    
    ...
这很好用。但是我在save() 但我有索引-1 对于每个块。我怎样才能getBlockIndex() 在中工作save()?

我需要在HTML中为内部块的类名添加索引号。

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

您不能使用wp.select 在保存组件中,保存组件只能使用块属性。如果使用其他来源的数据生成标记,则块验证将失败。

如果需要块的索引等数据,则需要将其存储在编辑组件的属性中,或在PHP中呈现块。

“其他”也是如此;“效果”;,不应在保存组件中执行以下操作:

使用状态发出HTTP请求检索非来自块属性的数据交互组件查询数据存储,例如useEffectuseCallback

  • 提示用户输入数据
  • 从DOM节点或全局变量提取数据
    • 保存组件的工作是获取块属性并将其转换为静态HTML,保存在数据库中。任何有效的交互或效果都需要进入“编辑”组件或其他位置,其结果存储在“属性”中。

    相关推荐

    如何从JavaScript生成COOKIEHASH

    首要问题是如何获取PHP变量的内容:COOKIEHASH 在柏树测试中。我正在为WordPress编写一些Cypress测试,为了设置cookiesto log in a user in WordPress using Cypress, 那么我需要COOKIEHASH-变量对于那些不熟悉COOKIEHASH, 转到WordPress安装并将此代码放入任何位置:echo \'<pre>\'; print_r(COOKIEHASH); echo \'</pre>\';&