web-dev-qa-db-fra.com

Comment accéder à la propriété "default" de l'attribut dans Gutenberg

Dans un bloc de Gutenberg, j'essaie de lire la valeur de la propriété default de l'attribut, afin de pouvoir trouver dans la routine de transformation (vers un autre type de bloc) si un attribut donné a toujours la valeur par défaut.

Avec this.props.attributes, je ne vois que les valeurs des attributs, mais j'ai besoin de leurs "métadonnées".

Un exemple de déclaration dans registerBlockType / ressemblerait à ceci:

attributes: {
    amount: {
      type: 'integer',
      default: 1
    },
// ...
}
2
chris_cm

Je viens de découvrir que je peux simplement définir une variable lorsque j'enregistre le bloc

var myBlock = registerBlockType( ... )

puis à l'intérieur de la fonction anonyme pour "transformer", je peux accéder aux attributs comme

myBlock.attributes
0
chris_cm

Je ne sais pas s'il existe un moyen direct d'inspecter la valeur par défaut d'un attribut, mais vous pouvez y parvenir indirectement en stockant la valeur par défaut dans une variable.

Vous pouvez ensuite le référencer depuis l'intérieur de l'objet attribut et depuis les fonctions edit et save.

par exemple. (non testé)

const amountDefault = 1;

registerBlockType( 'test/myblock', {
    title: __( 'Test Block' ),
    attributes: {
        amount: {
            type: 'integer',
            default: amountDefault 
        }
    },
    edit: function( props ) {
        const { attributes: { amount } } = props;

        return (
            <div className={ props.className }>
                <h3>Editor</h3>
                The default amount is: {amountDefault}
                The actual amount is: {amount}
            </div>
        );
    },
    save: function( props ) {
        const { attributes: { amount } } = props;
        return (
            <div>
                <h3>Editor</h3>
                The default amount is: {amountDefault}
                The actual amount is: {amount}
            </div>
        );
    }
} );

Ce n'est pas idéal mais devrait fonctionner comme prévu.

0
dgwyer