【发布时间】:2018-01-29 13:20:18
【问题描述】:
我最近开始研究 React-Native 应用程序,发现 Redux 很有帮助。但是根据我的理解,当我使用Reducers(主要用于使用WebServices API)时,数据存储在Components可以使用的应用级别状态。由于所有数据都处于应用级别状态,这对应用性能不是很苛刻。我在这里很困惑。请推荐一个出路。谢谢
【问题讨论】:
标签: react-native redux react-redux
我最近开始研究 React-Native 应用程序,发现 Redux 很有帮助。但是根据我的理解,当我使用Reducers(主要用于使用WebServices API)时,数据存储在Components可以使用的应用级别状态。由于所有数据都处于应用级别状态,这对应用性能不是很苛刻。我在这里很困惑。请推荐一个出路。谢谢
【问题讨论】:
标签: react-native redux react-redux
Redux 单一存储不应影响您的应用程序性能。唯一的区别是所有状态对象都嵌套在一个树中,而不是存储在多个不同的嵌套组件中。
相反,真正影响 React 应用程序性能的是渲染过程。在 React 中,不断更新组件的本地状态或 props 可能会导致性能下降,因为随之而来的,有时是无用的重新渲染。
如果您真的关心 Redux 性能,this article 可以解决您的大部分疑问并为您提供一些有用的见解。
【讨论】:
是的,数据将处于全局状态。这就是整个想法。为了在两个组件之间共享数据,我们需要将状态提升到公共父组件。对于复杂的应用程序,这仍然会导致数据流问题。 Redux 通过将状态一直提升到全局状态容器来解决数据流问题。从 redux 存储,状态通过 props 向下流向所有组件。这鼓励了 React 应用程序中的单向数据流。任何状态更改都是通过调度的操作对 Redux 存储进行的。并且从全局状态,数据流向容器和展示组件。
应用性能通常不是问题。我知道有人使用了 100 多个减速器,并且性能很好。对于表单,最好为 TextInput 设置一些本地状态。并使用 onBlur 将状态保存到 redux 存储。
什么时候不使用 Redux?对于只有几个屏幕的简单应用程序,Redux 可能有点过头了。对于简单的应用程序,您需要做的就是让所有状态都在根组件或容器组件中,并让它向下流向展示组件。如果你熟悉 Redux,你仍然可以使用 Redux。没有伤害。但是对于更简单的应用来说,易于使用本地状态。
【讨论】:
在我看来(只是我的看法):
关于非 UI 应用: OOP 更适合制作可重用的非 UI 库或没有事务/事件性质的应用程序。目前,几乎所有非 UI 应用程序的库仍然是用 OOP 构建的。将这两个世界结合起来会使生活变得困难。也许在未来,一切都会改变,但就目前而言,我不建议将 Redux / Flux 用于非 UI 应用程序。
【讨论】: