【发布时间】:2019-05-08 11:37:04
【问题描述】:
目前我有一个类组件,其中包含在我的 JSX 中充当组件的函数。
例子:
class MyComponent extends React.Component {
MySubComponent = (props) => {
if (props.display) {
return <p>This text is displayed</p>
}
}
render() {
return (
<this.MySubComponent display={true} />
)
}
}
以这种方式调用组件有什么影响吗?还有这个术语吗?
【问题讨论】:
-
只有在该功能组件内使用
this时才会有此好处。否则不需要动态创建它。请注意,由于您使用的是属性初始化器语法,因此将为基于类的组件的每个实例重新创建功能组件。 -
这是什么原因?如果没有,则说明您编写的代码比您所能编写的更复杂。
-
@estus 我希望渲染函数保持声明性。因此,我将所有渲染逻辑移至函数,以避免将它们包含在渲染函数本身中。我知道我可以轻松地调用像 {this.mySubComponent()} 这样的函数,但 imo 将其保留为 JSX 使其更易于阅读。
-
我明白了。根据 KISS 原则,此时 MySubComponent 不需要成为 MyComponent 的一部分。组件可以单独使用和测试。
-
@estus 我通常会同意,但是这个组件只会被这个类使用。它实际上只是一个类函数,只是它的显示方式存在争议。
标签: javascript reactjs components this react-props