Gutenberg: Considere la inyección de middleware de estado como mecanismo de extensibilidad

Creado en 6 may. 2017  ·  3Comentarios  ·  Fuente: WordPress/gutenberg

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:

Framework [Feature] Extensibility [Type] Question

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

Todos 3 comentarios

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

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

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

jasmussen picture jasmussen  ·  3Comentarios

davidsword picture davidsword  ·  3Comentarios

youknowriad picture youknowriad  ·  3Comentarios

moorscode picture moorscode  ·  3Comentarios

mhenrylucero picture mhenrylucero  ·  3Comentarios