We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
在React中的组件可以分为presentational components即UI(演示)组件和container components即容器组件。今天就来说说他们两个的区别以及这样的好处。
React
presentational components
container components
我的演示组件:
this.props.children
Flux
action
stores
props
我的容器组件:
Flux/redux
Reat
Redux
connect()
Relay
createContainer()
Utils
Container.create()
记住,组件不必发出DOM。他们只需要在UI问题之间提供组合界限。
我建议您开始构建您的应用程序的时候从UI组件开始。最终你会意识到,你正在把太多的props传给中间组件。当您注意到某些组件不使用他们收到的props,而只是转发它们,并且您必须在子组件需要更多数据时重新连接所有这些中间组件,这是引入一些容器组件的好时机。这样,您可以将数据和props到子组件,而不需要在不相关组件中负担。
这是一个持续的重构过程,所以不要开始就尝试。当您尝试使用此模式时,您将开始直观的了解何时抽出一些容器,就像您知道何时提取功能一样。
重要的是,您明白UI组件和容器之间的区别不是一个技术性的。相反,它的目的是区别的。
相比之下,这里有一些相关(但不同的)技术区别:
setState()
React 0.14
shouldComponentUpdate()
两个UI组件和容器都可以落入这些存储桶中。根据我的经验,UI组件往往是无状态的纯函数,容器往往是有状态的纯类。然而,这不是一个规则,而是一个观察,我已经看到与具体情况有关的恰恰相反的情况。
不要将UI和容器组件分离作为一个教条。有时候没有关系,也很难绘制线。如果您不确定特定组件是否应该是表示性的还是集装箱的,那么决定可能还为时过早。不要着急!
Getting Started with Redux Mixins are Dead, Long Live Composition Container Components Atomic Web Design Building the Facebook News Feed with Relay
原文链接
The text was updated successfully, but these errors were encountered:
No branches or pull requests
在
React
中的组件可以分为presentational components
即UI(演示)组件和container components
即容器组件。今天就来说说他们两个的区别以及这样的好处。区别
我的演示组件:
this.props.children
进行控制。Flux
的action
和stores
。props
接受和会掉数据。我的容器组件:
Flux/redux
操作,并将其作为回调给演示组件。Reat
Redux
的connect()
),来自Relay
的createContainer()
或来自Flux
Utils
的Container.create()
生成的,而不是用手写。好处
this.props.children
,而不是在多个容器组件中复制相同的标记和布局。记住,组件不必发出DOM。他们只需要在UI问题之间提供组合界限。
何时使用容器组件
我建议您开始构建您的应用程序的时候从UI组件开始。最终你会意识到,你正在把太多的
props
传给中间组件。当您注意到某些组件不使用他们收到的props
,而只是转发它们,并且您必须在子组件需要更多数据时重新连接所有这些中间组件,这是引入一些容器组件的好时机。这样,您可以将数据和props
到子组件,而不需要在不相关组件中负担。这是一个持续的重构过程,所以不要开始就尝试。当您尝试使用此模式时,您将开始直观的了解何时抽出一些容器,就像您知道何时提取功能一样。
其他方法
重要的是,您明白UI组件和容器之间的区别不是一个技术性的。相反,它的目的是区别的。
相比之下,这里有一些相关(但不同的)技术区别:
React
setState()
方法,有些则不使用。虽然容器组件往往是有状态的,而且表示组件往往是无状态的,但这并不是一个难题。演示组件可以是有状态的,容器也可以是无状态的。React 0.14
,组件可以被声明为类和函数。功能组件更容易定义,但它们缺少当前仅适用于类组件的某些功能。其中一些限制可能会在将来消失,但今天存在。由于功能组件更易于理解,我建议您使用它们,除非您需要状态,生命周期或性能优化,这些类型组件此时才可用。shouldComponentUpdate()
钩子中的浅层比较来优化。目前只有类可以定义shouldComponentUpdate()
,但可能会在将来发生更改。两个UI组件和容器都可以落入这些存储桶中。根据我的经验,UI组件往往是无状态的纯函数,容器往往是有状态的纯类。然而,这不是一个规则,而是一个观察,我已经看到与具体情况有关的恰恰相反的情况。
不要将UI和容器组件分离作为一个教条。有时候没有关系,也很难绘制线。如果您不确定特定组件是否应该是表示性的还是集装箱的,那么决定可能还为时过早。不要着急!
延伸阅读
Getting Started with Redux
Mixins are Dead, Long Live Composition
Container Components
Atomic Web Design
Building the Facebook News Feed with Relay
原文链接
The text was updated successfully, but these errors were encountered: