Введение

Front-end инженеры должны быть хорошо знакомы с управлением состоянием. Будь то Vuex, Pinia или Redux, Mobx и т. д., все они помогают нам обмениваться данными и управлять отчетами между разными страницами. В приложении Tauri интерфейсный инструмент управления состоянием обычный, но для бэкенда он несколько другой.

Конечно, вы можете узнать, что Tauri официально предоставляет плагин под названием tauri-plugin-store, который звучит так, будто отвечает за управление государством, выглядит очень формально и имеет почти 100 звезд. Так это правильный ответ, не так ли? К сожалению, это не так. Прежде всего, он все еще находится в разработке, и официальной версии нет. Во-вторых, он может отвечать только за доступ к некоторым статическим данным и не может обрабатывать такие объекты, как Window. Можно только сказать, что будущее можно ожидать?

Ближе к дому Таури обеспечивает формальную функцию управления статусом. Удивительно, что когда я начал изучать Таури, я мог легко найти их на официальном сайте. Но на данный момент его совсем нет, осталось лишь несколько спорадических описаний — Доступ к управляемому состоянию. Конечно, это не очень сложно. Давайте посмотрим, как с ним работать.

Управление состоянием

Я считаю, что каждый разработчик интерфейса знаком с приложением Todo List. На самом деле он может очень хорошо выполнять рабочий процесс управления состоянием. Мы постараемся вынести весь список в бэкенд для управления состоянием, а фронтенд будет отвечать только за работу и отображение.

Вот простой шаблон страницы со списком задач.

Теперь давайте посмотрим на серверную часть. Сначала мы создадим структуру TodoList для хранения данных, каждая задача имеет соответствующий ей уникальный идентификатор.

Это выглядит очень просто, и функция понятна с первого взгляда. Итак, как мы можем включить это в управление состоянием Tauri? Мы можем сделать это так.

Теоретически теперь мы можем беспрепятственно обращаться к структуре TodoList. Помните, о чем мы говорили в разделе Связь между веб-страницей и Rust? Добавим немного деталей.

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

Активное событие отправки

Помните «свободу», о которой мы упоминали в предыдущей главе, когда серверная часть активно отправляет события? Я полагаю, что после прочтения этой главы вы должны были примерно догадаться, как реализовать внутреннюю отправку активных писем.

Короче говоря, это поместить структуру с функцией emit, такой как app_handle или окно, в управление состоянием. Давайте попробуем реализовать простую функцию пакета сердцебиения.

Сначала нам нужно ввести новую стороннюю библиотеку tokio_cron_scheduler, которая будет отвечать за периодическую отправку пакетов пульса, мы можем инициализировать ее вот так。

Затем мы добавляем обработчик cron и соответствующий код сердцебиения в предыдущую структуру.

Теперь нам следует заново инициализировать управление состоянием структуры и добавить команду для взаимодействия с интерфейсом.

Наконец, мы добавляем кнопку сердца и слушателей во внешний интерфейс.

Как только мы нажмем Кнопку сердца, мы увидим, что функция сердцебиения работает нормально.