使用 React Native 和 Redux 进行动画状态管理

State Management for Animations Using React Native and Redux

背景

我一直在使用 React Native 和 Redux 构建一个应用程序,以评估是否将它用于 Swift 即将到来的项目并完全原生化。

我真诚地相信 Dan Abramov 的 Redux 技术是可靠的工程案例。不更新状态并将视图作为状态的函数很好,我非常赞同这个想法。我有点不适应的地方是将动画混入其中。

场景

更复杂的动画需要状态管理,例如淡出视图、替换文本并淡入。我只想在动画进行到一半时更新文本,这很容易做到使用本地状态并利用动画框架。

假设要显示的文本是由状态驱动的,它会在通过适当的动作和缩减器组合更改状态时更新,但为了演示,我需要在这两个动画之间使用它。

这方面的一个例子是从列表中选择一条记录,其中有一个屏幕标签显示所选记录的名称。理想情况下,您希望立即更新全局存储,但对标签本身执行良好的转换。

我的想法

在我看来,在组件内部使用 'local state' 来处理动画,并在主要的 Redux 存储中使用更多的整体数据或架构状态是有一定意义的。问题是这打破了视图是全局状态函数的想法,我不确定它是否适合我。

另一方面,通过编写大量的动作、reducer 和弄乱 store 来管理动画序列等也感觉不干净。

问题

我知道 React Native 还处于起步阶段,并不是每个人都在使用 Redux,但是在这种情况下是否有一种普遍接受的管理动画的方式?

我开发 React 才 9 个月左右,所以与你 Matt 这样的人相比,我可能是个菜鸟,我可以毫不犹豫地说 redux 很棒,但它不应该在所有情况下替换内部组件状态。特别是对于动画之类的东西。您自己问过这个问题,但我再问一次:为什么这需要处于全局状态? Redux 允许应用程序中的组件在整个应用程序中发生事情时获得更新状态。然而,这并不意味着除了 Redux 存储之外,应用程序中的任何地方都不应该有任何状态。

比我聪明的人说

If you feel pressured to do things “the Redux way”, it may be a sign that you or your teammates are taking it too seriously. It’s just one of the tools in your toolbox, an experiment gone wild. Local state is fine....

The tradeoff that Redux offers is to add indirection to decouple “what happened” from “how things change”. Is it always a good thing to do? No. It’s a tradeoff.

我引用的是什么?什么样的亵渎神明的 React 开发人员可能会说 Redux 不应该用于所有 React 的事情??

我会告诉你是谁。 Redux 的创造者

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

TLDR 在有用且有意义 的地方使用 Redux。对于它应该做的事情来说真是太棒了。 但是不要试图将那个圆钉装入方孔中。

我希望这是有用的。