22

背景

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

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

设想

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

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

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

我的想法

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

另一方面,通过编写大量动作、reducer 和使商店混乱来管理动画序列等也让人感觉不干净。

问题

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

4

1 回答 1

16

我开发 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 。对于它应该做的事情来说,这真是太棒了。但不要试图将那个圆钉插入方孔。

我希望这很有用。

于 2017-02-20T23:22:36.697 回答