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

时间:2016-11-02 11:08:04

标签: javascript architecture react-native redux react-animated

背景

我一直在使用React Native& amp; Redux将评估是否将其用于即将推出的Swift项目并完全原生。

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

方案

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

假设要显示的文本是由状态驱动的,它会在状态改变时通过适当的动作&更新。 reducer combo,但为了演示,我需要在这两个动画之间。

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

我的想法

在我看来,使用'本地状态'是有意义的。处理动画的组件内部,以及主要的Redux存储,用于更多的整体数据或架构状态。问题是这打破了视图是全球状态的一个功能的想法,我不确定是否与我坐在一起。

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

问题

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

1 个答案:

答案 0 :(得分:13)

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

比我聪明的男人说

  

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

     

Redux提供的权衡是添加间接来解耦“什么   发生了“从”事情如何变化“。这总是好事吗?   不,这是一个权衡。

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

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

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

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

我希望这很有用。