2016-03-01 13 views
1

例如:路线处理程序是否应使用容器或表示组件?

当开始我的应用我创建了包含一些回调派遣行动连接的组件,并呈现又包含许多其他presentationals组成“屏幕”单一表象组件(或“场景“)。

但后来我意识到很多这些组件都有不必要的渲染,因为它们每个都需要不同的状态部分。

那么,解决方案是什么?可能传递给路由处理程序一个呈现许多容器的表示,并且它们每个都连接到它关心的状态?那么,如果两个组件使用相同的状态部分呢,它们应该是不同的容器吗? 而且,如果我采用这种方法,是否有意义使用文件夹“视图”来存储这些路由处理程序?

你是怎么处理的?

谢谢!

+0

你能否澄清一下“不必要的渲染”的含义?您能否提供一些代码示例,突出显示您遇到的问题? –

+0

@CalvinBelden这个容器连接到状态的很大一部分,但并不是每个组件都需要它。结果,当一部分状态改变时,许多组件被重新渲染,尽管它们并不关心这种变化。 – Emilios1995

回答

4

shouldComponentUpdate()放在这些组件上,它不会成为一个问题。有关详细信息,请参阅Advanced PerformanceA Deep Dive into React Perf Debugging。这正是connect()生成的组件对React Redux的作用。

这表示感到免费connect()组件下面。对于connect()路由处理程序绝对没有义务,并且将组件留在表示之下。我会建议从表象组件开始,并在connect()中包含其中的一些,当它们变得棘手并需要传递太多道具时。

+0

ShoukdConponentUpdate是一个好主意。关于第二段,你建议开始通过路由器一个连接的容器,呈现许多表现形式。然后,如果需要,连接它们,如果所有这些都结束连接,则路由处理程序组件将成为呈现许多容器的表示。正确? – Emilios1995

+0

@ Emilios1995非常。方便时,您还可以嵌套容器。参见我的[免费Egghead课程](https://egghead.io/series/getting-started-with-redux)课程20至23。 –

相关问题