WordPress Onclick-Ereignis innerhalb des Gutenberg-Blocks hinzufügen

Lesezeit: 2 Minuten

Ich habe überall gesucht, um herauszufinden, wie man ein Ereignis in einen Gutenberg-Block einfügt. Ich arbeite daran, ein Akkordeonsystem mit ACF und Foundation hinzuzufügen. Ich habe einen Block und Felder und eine Vorlage mit ACF erstellt. Ich möchte, dass meine Benutzer das Akkordeon im visuellen Modus öffnen und schließen können.

Ich habe das folgende Skript gefunden, das überwacht, wenn Blöcke geändert werden. Das einzige Problem ist, dass es ausgelöst wird, bevor alles geladen ist, und ich musste ein Timeout verwenden, damit die Blöcke vollständig geladen werden können. Ich konnte keinen besseren Weg finden, dies zu erreichen. Irgendwelche Vorschläge?

const getBlockList = () => wp.data.select( 'core/editor' ).getBlocks();
let blockList = getBlockList();
wp.data.subscribe(() => {
    const newBlockList = getBlockList();
    const blockListChanged = newBlockList !== blockList;
    blockList = newBlockList;
    if ( blockListChanged ) {
        setTimeout(function(){
            jQuery(document).foundation();
            Foundation.reInit($('[data-accordion]'));
        }, 4000);
    }
});

  • Dies beantwortet Ihre Frage nicht, aber zur Überlegung können Sie mit der Block-API problemlos Akkordeonblöcke erstellen, ohne AFC zu verwenden. React verfügt über integrierte Onclick-Funktionen. Die Block-API kann ACF vollständig ersetzen, um eine bessere Benutzererfahrung zu erzielen

    – CyberJunkie

    9. Januar 2019 um 5:23 Uhr


Benutzer-Avatar
snnsnn

Am Frontend erhalten Sie wie zuvor statisches HTML. Wenn Sie Ihrer Komponente in der Speicherfunktion ein Klickereignis hinzufügen, wird es während der Serialisierung entfernt, sodass Sie dort nicht schwitzen müssen. Alles funktioniert wie zuvor blockiert.

Auf der Editorseite können Sie jedoch jedem Element im Rückgabeelement der Bearbeitungsfunktion ein Ereignis hinzufügen:

So machen Sie es in es6:

const handleClick = (event) => {
  console.log(event)
}

const element = <div onClick={handleClick}>Click Me</div>;

oder in es2015:

var handleClick = function handleClick(event) {
  console.log(event);
};

var element = React.createElement(
  "div",
  { onClick: handleClick },
  "Click Me"
);

Übrigens ist dies ein Gutenberg-Block, nicht seine von React gerenderte Repräsentation im Speicher.

<!-- wp:paragraph {"key": "value"} -->
<p>Welcome to the world of blocks.</p>
<!-- /wp:paragraph -->

1010730cookie-checkWordPress Onclick-Ereignis innerhalb des Gutenberg-Blocks hinzufügen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy