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:
middleware
)Confira automattic / Notifications-panel e como fazemos isso para integrar com automattic / wp-calypso
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
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