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

Mat*_*cey 20 javascript architecture react-native redux react-animated

背景

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

我真的相信Dan Abramov与Redux的技术是一个坚实的工程案例.不更新状态并将视图视为状态的函数是很好的,我非常关注这个想法.我有点失意的地方是将动画投入混音中.

脚本

更复杂的动画需要状态管理,例如,淡出视图,替换文本并将其淡入.我只想在动画中途更新文本,这很容易使用本地状态和杠杆作用动画框架.

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

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

我的想法

在我看来,在组件内部使用"本地状态"来处理动画是有一定意义的,而主要的Redux存储则用于更多的整体数据或架构状态.问题是这打破了视图是全局状态的一个功能的想法,我不确定它是否适合我.

另一方面,通过编写大量动作,减少器和使商店混乱来管理动画序列等也感觉不干净.

问题

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

Rya*_*ter 15

我一直在开发React只有9个月,所以我可能比你喜欢Matt的n00b,我可以毫不犹豫地说,redux很棒,但它不应该取代内部组件状态所有情况.特别是对于像动画这样的东西.你自己问了这个,但我再问一遍:为什么这需要处于全球状态?当整个应用程序发生事情时,Redux允许应用程序中的组件获得更新状态.但是,这并不意味着除了在Redux商店之外,应用程序中的任何地方都不应该存在任何状态.

一个比我聪明的男人说

如果你感到有压力要做"Redux方式"的事情,这可能表明你或你的队友太认真对待它了.它只是工具箱中的一个工具,一个疯狂的实验.当地的州很好......

Redux提供的权衡是增加间接性以将"发生的事情"从"事情如何变化"中解耦.这总是好事吗?不,这是一个权衡.

我引用的是什么?什么样的亵渎神灵的React开发者可能会说Redux不应该用于所有React?

我会告诉你谁.Redux的创建者.

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

TLDR在有用的地方和有意义的地方使用Redux .对于它想要做的事情来说它真棒.但是不要试图将那个圆形钉固定在方孔中.

我希望这很有用.

  • 我完全同意@Ryan Pfister,但在某些特殊情况下,例如反应导航嵌套导航器,如果您想使用选项卡导航器内的 Onscroll 对堆栈导航器的标题进行动画处理,则 redux 是动画的不错选择 (2认同)