Gutenberg: Pertimbangkan injeksi middleware negara sebagai mekanisme ekstensibilitas

Dibuat pada 6 Mei 2017  ·  3Komentar  ·  Sumber: WordPress/gutenberg

Terkait: #594

Di #594, ketika draf posting selesai disimpan, kami menyesuaikan URL browser saat ini untuk mencerminkan ID posting baru. Meskipun ini diperlukan dalam konteks layar editor khusus, ini mengurangi portabilitas editor karena perubahan URL ini tidak berlaku di luar konteks ini. Jika kita ingin mengizinkan inisialisasi editor di layar lain (misalnya front-end, Customizer), kita mungkin perlu menjelajahi opsi untuk menyuntikkan middleware khusus konteks. Ini bisa berfungsi sebagai pola ekstensibilitas umum untuk setiap efek samping dari perubahan keadaan.

Untuk contoh navigasi simpan pos, ini bisa terlihat seperti:

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

Lihat juga:

Framework [Feature] Extensibility [Type] Question

Komentar yang paling membantu

Lihat automattic/notifications-panel dan bagaimana kami melakukannya untuk berintegrasi dengan automattic/wp-calypso

menyuntikkan enhancer

tindakan default untuk mode iframe

integrasi khusus di Calypso

omong-omong, itu bekerja dengan sangat baik

Semua 3 komentar

Lihat automattic/notifications-panel dan bagaimana kami melakukannya untuk berintegrasi dengan automattic/wp-calypso

menyuntikkan enhancer

tindakan default untuk mode iframe

integrasi khusus di Calypso

omong-omong, itu bekerja dengan sangat baik

8 bulan telah berlalu dan kami masih membutuhkannya Kami memiliki refactoring utama dalam cara kami menangani data, tetapi middlewares masih memainkan peran penting. Kita bisa menjelajahi apakah perpustakaan kait akan cocok di sini. Kami mungkin menyuntikkan middlewares tambahan menggunakan filter di sini: https://github.com/WordPress/gutenberg/blob/master/editor/store/middlewares.js#L40. @youknowriad menyarankan untuk membuat API internal untuk memulai.

Ini digantikan oleh pola baru dengan modul data: Terutama subscribe dan withSelect API, yang memungkinkan pengembang untuk mengamati dan bereaksi terhadap perubahan dari waktu ke waktu: https://github.com/WordPress /gutenberg/blob/master/packages/data/README.md

Apakah halaman ini membantu?
0 / 5 - 0 peringkat