Skip to content

Latest commit

 

History

History
113 lines (87 loc) · 2.98 KB

File metadata and controls

113 lines (87 loc) · 2.98 KB

de.object

Это блок (Как и de.array) позволяет строить более сложные блоки из других блоков:

import blockFoo from '.../blocks/foo';
import blockBar from '.../blocks/bar';
...

const block = de.object( {

    block: {
        foo: blockFoo,
        bar: blockBar,
        ...
    },

} );

Когда мы запускаем de.object, запускаются все его непосредственные подблоки (blockFoo, blockBar, ...) и из их результатов составляется результат de.object'а:

const result = {
    //  Результат работы blockFoo
    foo: resultFoo,
    //  Результат работы blockBar
    bar: resultBar,
    ...
};

Т.е. форма результата будет такая же, как и форма объекта в определении de.object.

Ошибки

Если какой-то из подблоков завершится ошибкой, это не будет значить, что и de.object завершится ошибкой. Просто в result мы получим что-то такое:

const result = {
    //  Ошибка blockFoo
    foo: errorFoo,
    //  Результат работы blockBar
    bar: resultBar,
    ...
};

options.required

Если мы таки хотим, чтобы при ошибке какого-то подблока, и сам de.object завершался ошибкой, можно использовать options.required:

const block = de.object( {

    block: {
        //  Если этот блок зафейлится, то и весь de.object так же зафейлится.
        foo: blockFoo( {
            options: {
                required: true,
            },
        } ),
        bar: blockBar,
        ...
    },

} );

Вложенные de.object

В качестве подблоков у de.object могут быть любые блоки, в том числе и другие de.object:

const block = de.object( {
    block: {
        foo: blockFoo,
        bar: de.object( {
            block: {
                quu: blockQuu,
                ...
            },
        } ),
        ...
    },
} );

Соответственно, в результате мы получим объект с такой же формой:

const result = {
    foo: resultFoo,
    bar: {
        quu: resultQuu,
        ...
    },
    ...
};

Зависимости

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