具有随机值的古腾堡块属性未保存

时间:2019-09-17 10:28:21

标签: javascript wordpress wordpress-gutenberg

我需要为gutenberg块指定一个唯一的ID,但是由于我没有找到解决方法,因此我选择使用随机值来获取一个可能唯一的数字(我必须非常不幸的是,它在同一页面中两次生成相同的数字。

但是有一个问题...每次我保存该块时,由于每次都会重新创建该ID,所以它自身会损坏,即使这只是默认值,也是如此,因此仅在刚刚创建该块时才应使用它。

这是我的方块:

Block validation failed
Content generated by `save` function:

<div class="row" class="wp-block-materialize-fcd-gallery-block"><div class="col s6 m4 l3"><a sl="gal_7827" href="https://www.torvaianicahotel.it/wp-content/uploads/2019/07/IMG-20181206-WA0010.jpg" class="waves-effect waves-light img gal z-depth-2"><img src="https://www.torvaianicahotel.it/wp-content/uploads/2019/07/IMG-20181206-WA0010.jpg"/></a></div></div>

Content retrieved from post body:

<div class="row" class="wp-block-materialize-fcd-gallery-block"><div class="col s6 m4 l3"><a sl="gal_2133" href="https://www.torvaianicahotel.it/wp-content/uploads/2019/07/IMG-20181206-WA0010.jpg" class="waves-effect waves-light img gal z-depth-2"><img src="https://www.torvaianicahotel.it/wp-content/uploads/2019/07/IMG-20181206-WA0010.jpg"/></a></div></div>

这是我得到的错误:

action_area

两者之间的唯一区别是不同的随机数,因此似乎lightbox属性没有保存,并且每次都会重新设置为默认值...? 知道为什么会这样吗?

编辑:

好像我设法通过将默认值设置为null并在编辑时检查它是否为null,然后将属性设置为随机值(如果它为null)来修复它。

我不知道为什么这样做,所以如果有人可以解释我,我仍然会对适当的解释感兴趣。 (这就是为什么我没有回答自己的原因)

1 个答案:

答案 0 :(得分:0)

这就是您的代码块遇到错误的原因:

基于提供的save输出检查块验证。加载块编辑器并且重新生成的save输出标记不变时,就没有错误。

在您的情况下,由于您具有总是随机生成的属性,因此渲染的save输出也会每次更改。因此,每次运行save函数时,总会得到唯一的标记,并使该块无效。

通过将属性的默认值更改为null,然后仅在属性null时生成唯一ID,可以防止以后的加载重新生成该值并使该块无效。

此外,每个块都有一个名为clientId的属性,该属性已经是一个随机的唯一ID,因此使用它而不是生成自己的ID也可能是个好主意。