Гутенберг обновляет атрибуты в пользовательском компоненте

#wordpress-gutenberg #gutenberg-blocks

#wordpress-gutenberg #gutenberg-blocks

Вопрос:

У меня есть пользовательский тип записи для продуктов. Я пытаюсь создать блок в Gutenberg, который позволяет пользователю выбирать продукт, а затем отображать информацию о продукте в формате плитки.

Мне удалось создать выпадающий список с названием продукта и идентификаторами, у меня возникли проблемы с сохранением выбранного идентификатора продукта в атрибутах.

 import { __ } from "@wordpress/i18n";
import { withSelect } from "@wordpress/data";
import { SelectControl } from "@wordpress/components";

function edit({ products, setAttributes, attributes } = props) {
    let options = [];
    if (products) {
        products.map((product) => {
            options.push({
                value: product.id,
                label: product.title.rendered,
            });
        });
    }
    return (
        <div className="product-selector">
            <SelectControl
                label={__("Select Product:")}
                value={attributes.selectedProductId}
                onChange={(product) => {
                    setAttributes({ selectedProductId: product });
                }}
                options={options}
            />
        </div>
    );
}

export default withSelect((select, props) => {
    return {
        products: select("core").getEntityRecords("postType", "products"),
    };
})(edit);
  

Комментарии:

1. Какой тип атрибута selectedProductId определен в registerBlockType() и соответствует ли он тому, что вы пытаетесь сохранить?

2. Спасибо, @S.Тип атрибута Walsh — число, а идентификатор продукта — строка. Я использовал parseInt для изменения идентификатора продукта на номер, и это сработало.