Gutenberg: Betrachten Sie die State-Middleware-Injection als Erweiterbarkeitsmechanismus

Erstellt am 6. Mai 2017  ·  3Kommentare  ·  Quelle: WordPress/gutenberg

Verwandte: #594

In #594 passen wir die aktuelle Browser-URL an, wenn das Speichern eines Beitragsentwurfs abgeschlossen ist, um die neue Beitrags-ID widerzuspiegeln. Dies ist zwar im Kontext des dedizierten Editor-Bildschirms erforderlich, verringert jedoch die Portabilität des Editors, da diese URL-Änderungen außerhalb dieses Kontexts nicht anwendbar sind. Wenn wir die Initialisierung eines Editors auf anderen Bildschirmen (zB Frontend, Customizer) zulassen möchten, müssen wir möglicherweise Optionen zum Einschleusen kontextspezifischer Middleware untersuchen. Dies könnte als generisches Erweiterbarkeitsmuster für alle Nebenwirkungen von Zustandsänderungen dienen.

Für das Navigationsbeispiel nach dem Speichern könnte dies etwa so aussehen:

wp.editor.injectMiddleware( ( store ) => ( next ) => ( action ) => {
    const { type, isNew, post } = action;
    if ( 'REQUEST_POST_UPDATE_SUCCESS' === type ) {
        const [ baseUrl, query ] = window.location.href.split( '?' );
        const qs = parse( query || '' );
        const newUrl = baseUrl + '?' + stringify( {
            ...qs,
            post_id: newPost.id,
        } );
        window.history.replaceState( {}, 'Post ' + newPost.id, newUrl );
    }

    return next( action );
} );

Siehe auch:

Framework [Feature] Extensibility [Type] Question

Hilfreichster Kommentar

Sehen Sie sich das automattic/notifications-panel an und wie wir dies tun, um automattic/wp-calypso zu integrieren

Injektion der Enhancer

Standardaktionen für den iframe-Modus

benutzerdefinierte Integrationen in Calypso

es hat übrigens unglaublich gut funktioniert

Alle 3 Kommentare

Sehen Sie sich das automattic/notifications-panel an und wie wir dies tun, um automattic/wp-calypso zu integrieren

Injektion der Enhancer

Standardaktionen für den iframe-Modus

benutzerdefinierte Integrationen in Calypso

es hat übrigens unglaublich gut funktioniert

8 Monate sind vergangen und wir brauchen sie immer noch 😃 Wir hatten ein großes Refactoring im Umgang mit Daten, aber Middleware spielt immer noch eine wichtige Rolle. Wir könnten untersuchen, ob die Hooks-Bibliothek hier gut passen würde. Wir könnten hier zusätzliche Middlewares mithilfe von Filtern einfügen: https://github.com/WordPress/gutenberg/blob/master/editor/store/middlewares.js#L40. @youknowriad schlug vor, eine interne API für den Start zu

Dies wird durch neue Muster mit Datenmodul ersetzt: Insbesondere die APIs subscribe und withSelect , die es einem Entwickler ermöglichen, Änderungen im Laufe der Zeit zu beobachten und darauf zu reagieren: https://github.com/WordPress /gutenberg/blob/master/packages/data/README.md

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen