【问题标题】:The difference between function approach and classing approach in reactjsreactjs中函数方式和分类方式的区别
【发布时间】:2017-10-30 02:57:53
【问题描述】:

我在探索 reactjs 并注意到定义元素/组件的两种方式。

class Welcome extends React.Component {
  render() {
      return <h1>Hello, {this.props.name}</h1>;    
  };
}

const element = <Welcome name="Sara" />;
ReactDOM.render(
  element,
  document.getElementById('root')
);

以及功能方法:

function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}

它们在结果方面是相同的。但至少对我来说,功能性 appracoh 更干净。

什么带来了分类方法:来自 reactjs 文档:

这让我们可以使用其他功能,例如本地状态和生命周期挂钩。

除了状态,分类的生命周期钩子与纯函数方法相比,还有其他优势吗?

什么时候用哪一个?

【问题讨论】:

  • 第一种方法更像其他 OO 语言,使用起来更简洁。您可以尝试使用这两种方法制作复杂的组件,看看哪个更干净

标签: reactjs


【解决方案1】:

除了状态,分类的生命周期钩子与纯函数方法相比,还有其他优势吗?

没有。

什么时候用哪一个?

如果您需要类提供的附加功能,则必须使用类 (*)。否则更多的是个人喜好问题。


*:例如,生命周期方法可让您实现逻辑以避免重新渲染对性能很重要的组件。

【讨论】:

  • 您好,感谢您的回答。我还注意到我必须在类方法中编写 render() 而在函数方法中我只是返回了模板。有什么原因吗?
  • 类基本上是属性/方法的集合。它不能直接包含可执行代码。所以渲染代码必须包含在一个方法中,而方法名称恰好是render。否则你会怎么做?
  • 感谢您回答的扩展。我只是不确定为什么有两种方法以及如何决定使用哪一种。
  • 这可能有助于理解本地状态和生命周期方法为何/何时有用:facebook.github.io/react/docs/state-and-lifecycle.html
  • 谢谢。我正在和他们打交道。由于它是一种新语法(JSX),我必须经历几次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-05
  • 2011-10-06
相关资源
最近更新 更多