2016-12-27 94 views
2

我是React native和redux中的新成员。当我使用React native和redux时,我意识到state在还原store导致component呈现很多。反应原生 - redux状态导致性能问题

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

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

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

如果您有任何建议,请让我知道。

预先感谢您!

+0

你有一些代码可以显示吗? – Dherik

+1

@Dherik:谢谢你考虑我的问题。我将编写一个简单的代码并尽快编辑问题。 – LuongTruong

+1

@Dherik:Kuby的答案很棒。我现在可以解决我的问题。谢谢你们。 – LuongTruong

回答

3

好吧,如果你已经连接的状态将属性与mapStateToProps,那么只要您更改reducer的数据,这些props改变过,这将导致重新调用render()方法,所以basicly重新渲染。

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

对于你的情况,问题应该在别的地方,也许在导航器中,在从A导航到B后仍然将组件A留在背景中?

要回答你的问题,你可以存储在redux您的ListView数据(一些JSON列表),而且比connect它与您的组件,而是尽量让另一个组件的Component A里面,像Component A_2mapStateToProps连接此。那么如果你改变了数据,只有Component A_2将被重新渲染,而不是整个Component A

+0

请更正此答案的英文。还可以使用''使变量看起来像'this'。尝试添加一些格式以使答案更具可读性 – martianwars

+0

这是我能做的最好的英语,对不起。我编辑了亮点,现在好点了吗? – kuby

+0

好多了,upvoted :) – martianwars