Background

我一直在使用React Native&Redux将对是否在即将到来的项目中使用它进行判断,该项目将以Swift和完全本土化的方式进行.

我真的相信丹·阿布拉莫夫的Redux技术是固体工程的一个例子.不更新状态并将视图作为状态的一个函数是很好的,我非常赞同这个 idea .我要说的是在混音中加入动画.

Scenario

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

假设要显示的文本是由状态驱动的,则在通过适当的操作更改状态时,文本将被更新;减速机组合,但为了演示,我需要在这两个动画之间使用它.

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

My Thoughts

在我看来,在组件内部使用"本地状态"来处理动画是有一定意义的,而主Redux存储用于更全面的数据或架构状态.问题是,这打破了观点是全球状态的函数的 idea ,我不确定这是否正确.

另一方面,通过编写大量的动作、简化程序和凌乱的store 来管理动画序列等也让人感觉不干净.

The Question

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

推荐答案

我开发React的时间只有9个月,所以和你Matt这样的人相比,我可能是一个n00b,我可以毫不犹豫地说redux非常棒,但它不应该在所有情况下都取代内部组件状态.尤其是像动画这样的东西.你自己也问过这个问题,但我再次问:为什么这需要在全局?Redux允许应用程序中的组件在整个应用程序中发生事件时获得更新状态.然而,这并不意味着应用程序中除了Redux应用store 之外,任何地方都不应该有任何状态.

一个比我聪明得多的人说

如果你觉得有压力go "重做",这可能表明你或你的队友太认真了.这只是你工具箱里的一个工具,一个疯狂的实验.

Redux提供的折衷方案是添加间接方式来解耦"什么

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

我来告诉你是谁.The creator of Redux

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

TLDR在有用的地方使用Redux,在有用的地方使用Redux.它应该做的事情太棒了.

我希望这是有用的.

React-native相关问答推荐

ios 中节列表中的scrollToLocation 不起作用.在 Android 上,列表滚动回索引 0,但在 ios 上不会发生同样的情况

文本输入提示

为什么将字符串写入文件然后将相同的文件作为字符串读取会导致不同的字符串?

Error: Invariant Violation: Touchable child must either be native or forward setNativeProps to a native component stack

在选项卡更改时react-navigation

如何为我的 React Native Android 应用程序使用 Crashlytics?

Invariant Violation:requireNativeComponent: "RNCWebView" was not found in the UIManager

react-native 从右到左

如何在 React Native 中按下按钮时更改文本值?

ld:找不到-lFirebaseCore clang的库: error: linker command failed with exit code 1 (use -v to see invocation)

error TS2300: Duplicate identifier 'RequestInfo'

如何在 react-native 中从 AsyncStorage 中删除元素

react-native run-android 构建错误':app:generateDebugBuildConfig'

Ipad 上的 React Native - 错误 - could not connect to development server

如何在 react-native 中重叠

Super expression must either be null or a function, not undefined

从标题中的按钮导航到不同的屏幕

React Native:如何动态更改

React Native 项目,有时使用 expo start 获得连接 ECONNREFUSED 127.0.0.1:19001

React-Native 水平滚动视图分页:预览下一页/卡片