路由处理程序应该使用容器还是展示组件?
Should the route handlers use containers or presentational components?
例如:
启动我的应用程序时,我创建了一个连接组件,其中包含一些用于调度操作的回调,并呈现单个展示组件,该展示组件又包含构成 "screen"(或 "scene").
但后来我意识到其中许多组件都进行了不必要的渲染,因为它们中的每一个都需要状态的不同部分。
那么,解决方案是什么?也许向路由处理程序传递一个呈现许多容器的表示,并且每个容器都连接到它关心的状态?那么,如果两个组件使用相同的状态部分,它们应该是不同的容器怎么办?
而且,如果我采用这种方法,使用文件夹 'views' 来存储这些路由处理程序是否有意义?
你是怎么处理的?
谢谢!
将 shouldComponentUpdate()
放在这些组件上,这就不是什么大问题了。有关详细信息,请参阅 Advanced Performance and A Deep Dive into React Perf Debugging。这正是 connect()
生成的组件对 React Redux 的作用。
尽管如此,请随意使用下面的 connect()
个组件。绝对没有义务 connect()
路由处理程序并将组件保留在展示下方。我建议从展示组件开始,当它们变得难以使用并且需要向下传递太多道具时,将其中一些包装在 connect()
中。
例如:
启动我的应用程序时,我创建了一个连接组件,其中包含一些用于调度操作的回调,并呈现单个展示组件,该展示组件又包含构成 "screen"(或 "scene").
但后来我意识到其中许多组件都进行了不必要的渲染,因为它们中的每一个都需要状态的不同部分。
那么,解决方案是什么?也许向路由处理程序传递一个呈现许多容器的表示,并且每个容器都连接到它关心的状态?那么,如果两个组件使用相同的状态部分,它们应该是不同的容器怎么办? 而且,如果我采用这种方法,使用文件夹 'views' 来存储这些路由处理程序是否有意义?
你是怎么处理的?
谢谢!
将 shouldComponentUpdate()
放在这些组件上,这就不是什么大问题了。有关详细信息,请参阅 Advanced Performance and A Deep Dive into React Perf Debugging。这正是 connect()
生成的组件对 React Redux 的作用。
尽管如此,请随意使用下面的 connect()
个组件。绝对没有义务 connect()
路由处理程序并将组件保留在展示下方。我建议从展示组件开始,当它们变得难以使用并且需要向下传递太多道具时,将其中一些包装在 connect()
中。