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:
middleware
)Sehen Sie sich das automattic/notifications-panel an und wie wir dies tun, um automattic/wp-calypso zu integrieren
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
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