2016-12-16 43 views
1

当通过道具分解成一个阵营组件我目前的这样做:使用React道具传播运算符是否会显着减慢我的应用程序?

<MyComponent 
    {...this.props} 
    foo=foo 
    bar=bar 
/> 

foobar是道具,我知道MyComponent需要。但是,在大多数情况下,MyComponent也有其中的组件需要来自更高组件的道具,因此我使用{...this.props}运算符将它们传递给它们。我应该这样做,还是应该列出MyComponent子组件需要的道具?

回答

3

您应该使用状态管理像通量,终极版或Mobx(我想,没有使用Mobx在所有),以打击通过道具,通过多层次没有中间部件需要他们的这个问题。

您应该只将需要的道具传递给孩子。我在github上阅读了一篇很好的文章,但找不到它。

当你的应用程序增长时,它很难管理,它实际上是对Es6传播语法操作符的滥用(即它使短期传递道具变得容易,但长期来说,你仍然有问题,你只是掩盖它)。不知道它是否会减慢应用程序的速度,但如果更改了prop,那么它将重新渲染所有子组件。使用终极版,您可以组件“连接”到一个全局状态时

例如(认为数据库),并通过将它们作为具有道具转发到子组件道具任何你想要的部件和组件绕行。

起初很难学,但1000%是值得的。

+0

伟大的建议,并回答一些关于我已经假定Redux可能做的问题。 – JoeTidee

+0

@JoeTidee考虑标记为答案,如果它有帮助。 –

0

你应该只传入需要的道具,或者实现一个只能通过所需道具的容器组件。或者你可以在你的组件上实现shouldComponentUpdate。获得表演最简单的方法是只传递所需的道具。