Gutenberg: Considere a injeção de middleware de estado como mecanismo de extensibilidade

Criado em 6 mai. 2017  ·  3Comentários  ·  Fonte: WordPress/gutenberg

Relacionado: # 594

Em # 594, quando um rascunho da postagem termina de ser salvo, ajustamos o URL do navegador atual para refletir o novo ID da postagem. Embora isso seja necessário no contexto da tela do editor dedicado, isso reduz a portabilidade do editor, pois essas alterações de URL não são aplicáveis ​​fora deste contexto. Se quisermos permitir a inicialização de um editor em outras telas (por exemplo, front-end, Customizer), podemos precisar explorar opções para injetar middlewares específicos de contexto. Isso pode servir como um padrão de extensibilidade genérico para quaisquer efeitos colaterais das mudanças de estado.

Para o exemplo de navegação pós-salvamento, isso poderia ser algo como:

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 );
} );

Veja também:

Framework [Feature] Extensibility [Type] Question

Comentários muito úteis

Confira automattic / Notifications-panel e como fazemos isso para integrar com automattic / wp-calypso

injetar os potenciadores

ações padrão para o modo iframe

integrações personalizadas no Calypso

tem funcionado incrivelmente bem, a propósito

Todos 3 comentários

Confira automattic / Notifications-panel e como fazemos isso para integrar com automattic / wp-calypso

injetar os potenciadores

ações padrão para o modo iframe

integrações personalizadas no Calypso

tem funcionado incrivelmente bem, a propósito

8 meses se passaram e ainda precisamos disso 😃 Tivemos uma grande refatoração na maneira como lidamos com os dados, mas os middlewares ainda desempenham um papel importante. Poderíamos explorar se a biblioteca de ganchos seria uma boa opção aqui. Podemos injetar middlewares adicionais usando filtros aqui: https://github.com/WordPress/gutenberg/blob/master/editor/store/middlewares.js#L40. @youknowriad sugeriu fazer uma API interna para começar.

Isso foi substituído por novos padrões com módulo de dados: notavelmente as APIs subscribe e withSelect , que permitem a um desenvolvedor observar e reagir às mudanças ao longo do tempo: https://github.com/WordPress /gutenberg/blob/master/packages/data/README.md

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

spocke picture spocke  ·  3Comentários

wpalchemist picture wpalchemist  ·  3Comentários

moorscode picture moorscode  ·  3Comentários

mhenrylucero picture mhenrylucero  ·  3Comentários

franz-josef-kaiser picture franz-josef-kaiser  ·  3Comentários