【问题标题】:react native - redux state cause performance issuesreact native - redux 状态导致性能问题
【发布时间】:2017-05-11 16:30:21
【问题描述】:

我是 React native 和 redux 的新手。当我使用 React native 和 redux 时,我意识到 state in redux store 会导致 component 渲染很多。

例如,我有一个列表视图的数据,它存储为 redux 状态。列表视图将显示在屏幕 A 中。出于某些原因,我将在下一个屏幕中修改列表视图。通过将数据存储在 redux 状态,屏幕 A 中的列表视图将在下一个屏幕中的列表视图发生变化时自动更新。

不幸的是,每当列表视图中的数据发生更改时,我都必须重新渲染屏幕 A 中的每个组件(如果我将数据置于组件状态,则只会重新渲染列表视图而不是所有组件)。

我可以将列表视图的数据存储在 redux 状态并重新渲染它(不是所有组件)吗?

如果您有任何建议,请告诉我。

提前谢谢你!

【问题讨论】:

  • 你有一些代码要显示吗?
  • @Dherik:感谢您考虑我的问题。我会做一个简单的代码并尽快编辑问题。
  • @Dherik:Kuby 的回答很棒。我现在可以解决我的问题了。谢谢大家。

标签: reactjs react-native redux react-redux


【解决方案1】:

好吧,如果您已使用mapStateToProps 将状态连接到属性,那么每当您更改reducer 中的数据时,这些props 也会更改,这会导致重新调用render() 方法,所以基本上是重新渲染。

state 中的每个连接的 props 都会导致组件重新渲染,如果它们在 reducers store 中发生更改。

在您的情况下,问题应该出在其他地方,可能在导航器中,从 A 导航到 B 后组件 A 仍然安装在后台?

要回答您的问题,您可以将ListView(一些json列表)的数据存储在redux中,然后将connect与您的组件一起存储,但尝试在Component A中创建另一个组件,例如Component A_2 并将其与 mapStateToProps 连接。那么如果你改变数据,只会重新渲染Component A_2,而不是整个Component A

【讨论】:

  • 请更正这个答案的英文。还可以使用 `` 使变量看起来像 this。尝试添加一些格式以使答案更具可读性
  • 这是我能做到的最好的英语,对不起。我编辑了亮点,现在更好了吗?
  • @kuby:谢谢,这是我的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-05
  • 1970-01-01
  • 1970-01-01
  • 2021-11-07
  • 2022-01-15
  • 1970-01-01
  • 2021-03-08
相关资源
最近更新 更多