Gutenberg: 拡張性メカニズムとして州のミドルウェアインジェクションを検討する

作成日 2017年05月06日  ·  3コメント  ·  ソース: WordPress/gutenberg

関連:#594

#594では、投稿の下書きの保存が完了すると、新しい投稿IDを反映するように現在のブラウザのURLを調整します。 これは専用のエディター画面のコンテキストで必要ですが、これらのURLの変更はこのコンテキスト外では適用されないため、エディターの移植性が低下します。 他の画面(フロントエンド、カスタマイザーなど)でエディターを初期化できるようにする場合は、コンテキスト固有のミドルウェアを挿入するためのオプションを検討する必要があります。 これは、状態変化の副作用の一般的な拡張パターンとして機能する可能性があります。

保存後のナビゲーションの例では、次のようになります。

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

参照:

Framework [Feature] Extensibility [Type] Question

最も参考になるコメント

automattic / notifications-panelとこれをautomatic / wp-calypsoと統合する方法を確認してください

エンハンサーを注入する

iframeモードのデフォルトのアクション

カリプソのカスタム統合

ちなみに、それは信じられないほどうまく機能しています

全てのコメント3件

automattic / notifications-panelとこれをautomatic / wp-calypsoと統合する方法を確認してください

エンハンサーを注入する

iframeモードのデフォルトのアクション

カリプソのカスタム統合

ちなみに、それは信じられないほどうまく機能しています

8か月経ちましたが、まだ必要です😃データの処理方法に大幅なリファクタリングがありましたが、ミドルウェアは依然として重要な役割を果たしています。 ここでは、フックライブラリが適しているかどうかを調べることができます。 https://github.com/WordPress/gutenberg/blob/master/editor/store/middlewares.js#L40で、フィルターを使用して追加のミドルウェアを挿入する場合があり@youknowriadは、開始のために内部APIを作成することを提案しました。

これは、データモジュールの新しいパターンに取って代わられます。特にsubscribeおよびwithSelect APIは、開発者が時間の経過に伴う変化を観察して対応できるようにします//github.com/WordPress /gutenberg/blob/master/packages/data/README.md

このページは役に立ちましたか?
0 / 5 - 0 評価