Управление состоянием для анимации с использованием React Native и Redux

Фон

Я создаю приложение, использующее React Native и Redux, чтобы оценить, использовать ли его для предстоящего проекта поверх Swift и полностью использовать его.

Я искренне верю, что методы Дэн Абрамова с Redux являются примером солидной инженерии. Не обновлять состояние и иметь представление в зависимости от состояния, это здорово, и я очень много борюсь с этой идеей. Там, где я прихожу, несколько размыты - это метать анимации в микс.

Сценарий

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

Скажем, что текст, который будет отображаться, управляется состоянием, он будет обновляться в момент изменения состояния с помощью соответствующего действия и комбинации редукторов, но для презентации мне это нужно между этими двумя анимациями.

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

Мои мысли

На мой взгляд, имеет смысл использовать "локальное состояние" внутри компонентов для работы с анимациями, а главное хранилище Redux для более общего состояния данных или архитектуры. Проблема в том, что это нарушает идею о том, что представление является функцией глобального состояния, и я не уверен, что сидит прямо со мной.

С другой стороны, управление анимационными последовательностями и т.д. путем написания кучек действий, редукторов и загромождения магазина также не является чистым.

Вопрос

Я знаю, что React Native находится в зачаточном состоянии, и не все используют Redux, но существует ли общепринятый способ управления анимациями в этом сценарии?

Ответы

Ответ 1

Я развиваю React всего за 9 месяцев, и поэтому я, вероятно, n00b по сравнению с такими, как вы, Мэтт, и я могу сказать без особого колебания, что redux - потрясающий, но он не должен заменять внутренние во всех обстоятельствах. Особенно для таких вещей, как анимация. Вы сами это задали, но я снова спрашиваю: почему это должно быть в глобальном состоянии? Redux позволяет разрешать компонентам в приложении обновляться, когда все происходит в вашем приложении. Это не означает, однако, что нигде в вашем приложении никогда не должно быть никакого состояния, кроме как в магазине Redux.

Человек гораздо умнее меня сказал

Если вы чувствуете давление, чтобы делать что-то "путь Redux", это может быть признаком того, что вы или ваши товарищи по команде воспринимаете это слишком серьезно. Это всего лишь один из инструментов в вашем наборе инструментов, эксперимент прошел дико. Локальное состояние прекрасное....

Компромисс, который предлагает Redux, заключается в добавлении направления, чтобы отделить "что произошло" от "как все меняется". Всегда ли это хорошо? Нет. Это компромисс.

Что я цитирую? Какой богохульный разработчик React мог сказать, что Redux не следует использовать для всех вещей React?

Я скажу вам, кто. Создатель Redux.

https://medium.com/@dan_abramov/you-might-not-need-redux-be46360cf367#.flb8fzjr8

TL;DR Используйте Redux, где он полезен и где он имеет смысл. Это потрясающе для того, что он должен делать. Но не пытайтесь вставить этот круглый штифт в квадратное отверстие.

Надеюсь, это полезно.