Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Простое и понятное управление состоянием во vue...

Простое и понятное управление состоянием во vue.js – Александр Сафт - Vue.js Moscow Meetup

Веб-фреймворки хорошо помогают создавать сложные системы с большим жизненным циклом. Но при решении простых задач современные идеи начинают показывать себя с другой стороны. Разработка компонентов даже с простой бизнес-логикой забирает на себя слишком много времени. Vue хорошо показывает себя в упрощении разработки. Но есть еще места, в которых бывает многовато кода на единицу бизнес-логики.

В докладе Александр расскажет и покажет на примерах как сделать код приложения на Vue еще проще, не потеряв в надежности и выразительности.

Vue.js Moscow Meetup

March 28, 2018
Tweet

More Decks by Vue.js Moscow Meetup

Other Decks in Programming

Transcript

  1. Задача 1. Получить данные с сервера 2. Отобразить данные 3.

    Отобразить сообщение об ошибке (в случае ошибки) Ключевые моменты: • Асинхронная работа с сервером • Централизованная и локальная обработка ошибок 4
  2. Сценарий тестирования Приведем простой сценарий тестирования:
 • Подождать 100 мс

    • Посчитать random() • Если random() < 0.5, упасть с ошибкой • Если больше – вернуть значение 6
  3. Асинхронность чистая Без менеджера состояний – внутри компонента. Нужны: •

    Сама асинхронная функция • Три места в разметке: • Для прелоадера • Для отображения результата • Для отображения ошибки 7
  4. Vue-async-methods Простой плагин, который оборачивает переданные ему промисы в объект

    с флагами и данными, которыми сам и управляет. 
 Флаги: isCalled, isPending, isResolved, isRejected
 Значения: resolvedWith, resolvedWithSomething, resolvedWithEmpty
 Ошибка: rejectedWith 
 Прочее: execute, promise 8
  5. Асинхронность с менеджером состояний • Данные, флаги, ошибки – всё

    в хранилище • Нужен «обслуживающий» код • Линейная зависимость • Коэффициент может быть слишком высоким 11
  6. Redux reducer – flux standard actions • Создание экшенов автоматизировано

    • Нет необходимости хранить строки • Очень хорошо показывает себя в связке с TypeScript 12
  7. Можно ли упростить? Ошибка загрузки данных нужна только чтобы ее

    отобразить. Приложение не зависит от этой ошибки. Цель: оставить в сторе только бизнес-логику. 14
  8. Можно ли упростить? Можно. Всегда можно. Некоторые варианты: • Добавить

    шину событий • Не класть данные в стор • Лазить в стор из компонентов. 21