Gutenberg: Considérez l'injection de middleware d'état comme mécanisme d'extensibilité

Créé le 6 mai 2017  ·  3Commentaires  ·  Source: WordPress/gutenberg

Connexe : #594

Dans #594, lorsqu'un brouillon de publication a fini d'être enregistré, nous ajustons l'URL du navigateur actuel pour refléter le nouvel ID de publication. Bien que cela soit nécessaire dans le contexte de l'écran de l'éditeur dédié, cela réduit la portabilité de l'éditeur car ces changements d'URL ne sont pas applicables en dehors de ce contexte. Si nous voulons autoriser l'initialisation d'un éditeur sur d'autres écrans (par exemple, front-end, Customizer), nous devrons peut-être explorer des options pour injecter des middlewares spécifiques au contexte. Cela pourrait servir de modèle d'extensibilité générique pour les effets secondaires des changements d'état.

Pour l'exemple de navigation de sauvegarde de publication, cela pourrait ressembler à quelque chose comme :

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

Voir également:

Framework [Feature] Extensibility [Type] Question

Commentaire le plus utile

Découvrez automattic/notifications-panel et comment nous procédons pour l'intégrer à automattic/wp-calypso

injection des activateurs

actions par défaut pour le mode iframe

intégrations personnalisées dans Calypso

d'ailleurs ça marche incroyablement bien

Tous les 3 commentaires

Découvrez automattic/notifications-panel et comment nous procédons pour l'intégrer à automattic/wp-calypso

injection des activateurs

actions par défaut pour le mode iframe

intégrations personnalisées dans Calypso

d'ailleurs ça marche incroyablement bien

8 mois se sont écoulés et nous en avons toujours besoin 😃 Nous avons eu une refactorisation majeure dans la façon dont nous gérons les données, mais les middlewares jouent toujours un rôle important. Nous pourrions explorer si la bibliothèque de crochets serait un bon ajustement ici. Nous pouvons injecter des middlewares supplémentaires à l'aide de filtres ici : https://github.com/WordPress/gutenberg/blob/master/editor/store/middlewares.js#L40. @youknowriad a suggéré de créer une API interne pour commencer.

Ceci est remplacé par de nouveaux modèles avec module de données : notamment les API subscribe et withSelect , qui permettent à un développeur d'observer et de réagir aux changements au fil du temps : https://github.com/WordPress /gutenberg/blob/master/packages/data/README.md

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

franz-josef-kaiser picture franz-josef-kaiser  ·  3Commentaires

nylen picture nylen  ·  3Commentaires

wpalchemist picture wpalchemist  ·  3Commentaires

ellatrix picture ellatrix  ·  3Commentaires

bradyvercher picture bradyvercher  ·  3Commentaires