Блоки Wordpress: asyn c REST вызывает функцию редактирования registerBlockType - PullRequest
0 голосов
/ 15 февраля 2020

Я пишу плагин WordPress, который создает блок, блок должен извлекать данные, используя пользовательскую конечную точку REST, которая возвращает, в примере ниже, простую строку. Я хотел бы включить эту строку в return from edit () и save () в моей конфигурации registerBlockType, но. Я использую fetch () для вызова конечной точки REST, но это, очевидно, asyn c. Любые мысли о том, как сделать это лучше всего, спасибо:

const { registerBlockType } = wp.blocks 

registerBlockType( 'daisy-views/da-test', {
    title:      'Daisy Test: Test Block',
    icon:       'format-gallery',
    category:   'common',
    attributes: {
        gid: {
            default: 2,
            type:   'integer'
        },
    },

    edit( props ) {

        const restEP = daRestUrl + 'test'

        fetch( restEP, {
            body: JSON.stringify( {p: 'test param'}),  // test parameters
            cache: 'no-cache',
            method: 'POST',
            redirect: 'follow', 
            referrer: 'no-referrer', 
            headers : {
                'Access-Control-Allow-Origin' : '*',
                'X-WP-Nonce' : wpApiSettings.nonce,
            }
        })
            .then( response => {
                response.json()
                    .then( data => {
                        var returnValue = data.data                     // REST test, returns a string
                        console.log( 'Fetch returns: ', returnValue )
                    })
            })

        return <div>
            test block edit
                {/* return value from fetch here */}
            </div>
    },
    save( props ) {

        return <div>
            Test Block
            {/* return value from fetch here */}
            </div>
    }
} );

1 Ответ

0 голосов
/ 18 февраля 2020

Мое лучшее решение на сегодняшний день - добавить атрибут кода и заставить вызов fetch заполнить этот атрибут HTML. если выборка вызывается непосредственно в функции редактирования, необходимо выполнить проверку, чтобы предотвратить ее бесконечный вызов l oop при обновлении атрибута.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...