Relacionado: # 594
En el n. ° 594, cuando el borrador de una publicación termina de guardarse, ajustamos la URL del navegador actual para reflejar la nueva ID de la publicación. Si bien esto es necesario en el contexto de la pantalla del editor dedicada, esto reduce la portabilidad del editor, ya que estos cambios de URL no son aplicables fuera de este contexto. Si quisiéramos permitir la inicialización de un editor en otras pantallas (por ejemplo, front-end, Customizer), es posible que necesitemos explorar opciones para inyectar middlewares específicos del contexto. Esto podría servir como un patrón de extensibilidad genérico para los efectos secundarios de los cambios de estado.
Para el ejemplo de navegación para guardar la publicación, esto podría verse así:
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 );
} );
Ver también:
middleware
)Echa un vistazo al panel automático / de notificaciones y cómo lo hacemos para integrarlo con automattic / wp-calypso
acciones predeterminadas para el modo iframe
integraciones personalizadas en Calypso
ha funcionado increíblemente bien, por cierto
Pasaron 8 meses y todavía lo necesitamos 😃 Tuvimos una refactorización importante en la forma en que manejamos los datos, pero los middlewares aún juegan un papel importante. Podríamos explorar si la biblioteca de ganchos sería una buena opción aquí. Podríamos inyectar middlewares adicionales usando filtros aquí: https://github.com/WordPress/gutenberg/blob/master/editor/store/middlewares.js#L40. @youknowriad sugirió hacer una API interna para comenzar.
Esto es reemplazado por nuevos patrones con módulo de datos: en particular, las API subscribe
y withSelect
, que permiten a un desarrollador observar y reaccionar a los cambios a lo largo del tiempo: https://github.com/WordPress /gutenberg/blob/master/packages/data/README.md
Comentario más útil
Echa un vistazo al panel automático / de notificaciones y cómo lo hacemos para integrarlo con automattic / wp-calypso
inyectando los potenciadores
acciones predeterminadas para el modo iframe
integraciones personalizadas en Calypso
ha funcionado increíblemente bien, por cierto