Дозагрузка данных и патчи
Карточку можно обновить частично, не загружая ее заново. Действие download запрашивает с сервера патч — описание изменений — и применяет его к элементам карточки.
Действие download
Для дозагрузки данных в виде patch и обновления текущего элемента укажите действие download:
div-action://download?url=<patch_url>
|
Параметр |
Описание |
|
|
Ссылка для получения патча. |
В типизированном действии download можно сразу указать, что делать после загрузки:
{
"log_id": "load_more",
"typed": {
"type": "download",
"url": "https://example.com/patch.json",
"on_success_actions": [
{
"log_id": "loaded",
"url": "div-action://set_variable?name=is_loaded&value=true"
}
],
"on_fail_actions": [
{
"log_id": "load_failed",
"url": "div-action://set_variable?name=has_error&value=true"
}
]
}
}
|
Параметр |
Описание |
|
|
Ссылка для получения патча. |
|
|
Действия при успешной загрузке. |
|
|
Действия при неуспешной загрузке, если о ней сообщил хост или закончилось время ожидания. |
Для действия в формате url те же действия задаются в поле download_callbacks.
Формат патча
Формат ответа:
{
"patch": {
// данные в формате patch
},
"templates": {
// шаблоны, которые могут быть использованы в секции patch
}
}
Секция patch описывается объектом patch:
|
Параметр |
Описание |
|
|
Изменения элементов. Обязательный параметр. Каждое изменение содержит |
|
|
Порядок применения изменений: |
|
|
Действия после применения изменений. |
|
|
Действия после ошибки применения изменений в режиме |
Пример: замена элемента
{
"patch": {
"changes": [
{
"id": "placeholder",
"items": [
{
"type": "text",
"text": "Загруженный текст"
}
]
}
]
}
}
Элемент с идентификатором placeholder заменяется текстом из items.
Загрузка патчей на платформах
- Android: патчи загружаются через
DivNetworkClient, если он настроен, см. Настройка сетевого стека. Собственный загрузчик — реализацияDivDownloader— передается вDivConfigurationи имеет приоритет. - iOS: патчи загружает
DivKitComponents. Собственный загрузчик — реализация протоколаDivPatchProvider— передается в параметреpatchProvider. - Web: параметры запроса задаются в параметре
fetchInitфункцииrender.
Узнать больше
Вы можете обсуждать интересующие вас темы в сообществе пользователей DivKit в Telegram: https://t.me/divkit_community_ru.