在创建块时运行一次代码

时间:2021-09-30 作者:Lenita

我正在用react开发一个自定义插件,我想在自定义块添加到页面后,为每个新添加的实例创建一个唯一的标识符。

所以我加上我的;“自定义块”;代码运行一次以创建和分配id。当我再次访问后端时,代码不应再次运行。但如果我添加一个新的;自定义块“;,代码将再次为此实例运行,并创建;分配一个新id。所以我想我正在寻找一个类似“的钩子”;blockAddedToPage“;大概吧,但我找不到匹配的东西。

我知道有客户ID,但我需要一些永久性的和更短的:D

我编写了一个小助手函数来创建我的id,但如何仅在将块添加到页面时运行它?

1 个回复
SO网友:Phil

可以使用块属性和useEffect() 在您的edit 功能:

useEffect(() => {
    // If the ID is already set, we don\'t need to do anything
    if (attributes.id) {
        return;
    }

    // The ID attribute isn\'t set, so we\'ll create it and set it now
    setAttributes({
        id: 123, // This is just for example purposes, you can set up your ID however you want
    });
}, []); // Empty array ensures this effect only runs once
One thing to note: 如果使用现有ID属性复制/粘贴/复制现有块,则不会再次运行ID创建代码。

如果您正在寻找一种更健壮的解决方案来为块生成唯一ID(并且可以更改ID),那么我使用了类似的技术(see code here) 对于我的一个块,它将post ID和实例ID结合起来创建唯一ID。如果重新排列块,插入新块,等等。它会根据需要重新生成ID。

相关推荐