---
metadata:
  - name: generator
    content: Diplodoc Platform v5.70.0
alternate:
  - https://divkit.tech/docs/en/concepts/triggers.md
  - https://divkit.tech/docs/ru/concepts/triggers.md
  - href: https://divkit.tech/docs/ru/concepts/triggers.md
    type: text/markdown
    title: Markdown version
  - href: https://divkit.tech/docs/ru/llms.txt?revision=r22102947
    rel: describedby
---
> **Documentation Index:** Fetch the complete configuration index at https://divkit.tech/docs/ru/llms.txt?revision=r22102947

# Триггеры

Триггер выполняет [действия](https://divkit.tech/docs/ru/concepts/interaction.md), когда изменяется значение [переменной](https://divkit.tech/docs/ru/concepts/variables.md) и выполняется заданное условие. Триггеры объявляются на уровне карточки и на уровне отдельного элемента. Все параметры триггера перечислены в [справочнике](https://divkit.tech/docs/ru/concepts/divs/2/div-trigger.md).

## Триггеры карточки {#variable-triggers}

После изменения значения переменной, кроме обновления всех свойств, в которых используется переменная, можно выполнить любое количество [действий](https://divkit.tech/docs/ru/concepts/interaction.md). Для этого добавьте описание триггера в блоке `variable_triggers`:

- Параметр `condition` — условие выполнения действия. Может содержать логическое выражение с использованием переменных или события, по которым будет запущен триггер.
- Параметр `mode` — определяет, в каком случае срабатывает действие:

    - `on_condition` — действие срабатывает, если при изменении значения переменной стало выполняться условие (до этого условие не выполнялось);
    - `on_variable` — действие срабатывает каждый раз, если при изменении значения переменной условие выполняется.

    Например, переменные меняются несколько раз и `condition` последовательно принимает значения `true → true → false → true`. При использовании значения `on_condition` действие сработает 2 раза, при использовании значения `on_variable` — 3 раза.

- Параметр `actions` — описание [действий](https://divkit.tech/docs/ru/concepts/interaction.md), которые требуется выполнить при выполнении условия.

Ограничения:

- Условия без использования переменных (к примеру `"condition": "@{1 == 1}"`) или с функциями, не зависящими от переменных, **не будут работать**, так как без переменных не ясно, когда именно следует запускать проверку условия.
- Триггер не будет срабатывать, если в условии сравниваемые между собой сущности будут иметь разные типы (к примеру, переменная логического типа сравнивается с переменной типа `integer`).

Например:

```json translate=no
{
    "states": { ... },
    "variables": { ... },
    "variable_triggers": [
        {
            "condition": "@{liked}",
            "actions": [
                {
                    "url": "div-action://set_variable?name=total_likes&value=@{sum(total_likes, 1)}"
                }
            ]
        },
        {
            "condition": "@{subscribed && !liked}",
            "mode": "on_condition",
            "actions": [
                {
                    "url": "div-action://set_state?state_id=0/subscriptions/expanded"
                },
                {
                    "log_id": "common_posts_shown",
                    "url": "div-action://set_state?state_id=0/common_posts/collapsed"
                }
            ]
        },
        {
            "condition": "@{total_likes > 100 || user_name == 'John'}",
            "mode": "on_variable",
            "actions": [ ... ]
        }
  ]
}
```
В примере выше первый триггер будет запускать действие, которое увеличивает значение переменной `total_likes` каждый раз, когда значение переменной `liked` сменится с `false` на `true` . По такой же логике будет работать и второй триггер.

Третий триггер, благодаря параметру `"mode": "on_variable"`, будет запускаться каждый раз при изменении значений переменных и выполнении условия в `condition` .

## Триггеры уровня элемента {#local-triggers}

Триггеры уровня элемента срабатывают при изменении значения [переменной уровня элемента](https://divkit.tech/docs/ru/concepts/variables.md#local). Их формат такой же, как у [триггеров карточки](#variable-triggers).

Триггер уровня элемента:

* имеет доступ к переменным уровня элемента у родительского объекта;

* срабатывает даже для невидимых элементов (с параметром `"visibility" = "gone"/"invisible"`);

* не срабатывает в состояних и табах, которые сейчас не активны;

* при использовании внутри прототипов [item_builder](https://divkit.tech/docs/ru/concepts/item_builder.md) имеет доступ к данным текущего элемента через переменную, указанную в `data_element_name`, и к индексу текущего элемента через переменную `index`.

При переходе в новое состояние или на другой таб:

* если состояние (таб) активируется впервые, то триггер срабатывает при выполнении условия в `condition`;

* если раньше уже произошла инициализация состояния (таба) и до выхода из него условие не выполнялось, то триггер сработает, когда условие начнет выполняться.

<!-- source: ru/_includes/index/troubleshooting.md -->
## Узнать больше {#troubleshooting}

Вы можете обсуждать интересующие вас темы в сообществе пользователей DivKit в Telegram: [https://t.me/divkit_community_ru](https://t.me/divkit_community_ru).



[Репозиторий DivKit](https://github.com/divkit/divkit)




<!-- endsource: ru/_includes/index/troubleshooting.md -->
