React class & function component 的区别

学习react之理解 React class & function component区别

本文参考自

https://www.cnblogs.com/chrissong/p/10445191.html

function component

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

class 语法的component

class Welcome extends React.Component {
  render() {
    return <h1>Hello, {this.props.name}</h1>;
  }
}
functionclass component 的区别
1.syntax 语法:functional component语法更简单,只需要传入一个props参数,返回一个react片段。class component 要求先继承React.Component然后常见一个render方法,在render里面返回react片段。两者编译之后的代码不同
2.state 状态:因为function component 知识一个普通的函数所以不可以在其中用this.state , setState(),这也是它被叫做无状态组件的原因。所以一个组件需要用到状态的时候要用到class component3.lifecycle hooks 生命周期:function component 不具有生命周期,因为所有的生命周期钩子函数均来自于React.Component。所以当一个组件需要生命周期钩子的时候我们也需要class component。

为什么要用function component?
function component和class component 比起来缺少那么多功能为什么还要用function componet。
function component更易于编写阅读和测试
代码量更少,上手容易
因为没有状态,可以更好的实现容器和表现的分离,可以只负责表现层的逻辑,不用考虑因为复杂的逻辑去改变状态从而带来的麻烦,有利于代码复用。
react团队提倡使用


为什么要用class component?
虽然function component 有很多好处,但是有些时候class component 还是不可替代的。
当需要实现一些容器组件的时候,需要改变内部状态来实现自组件的改变的时候。
当需要用到生命周期钩子函数实现一些功能的时候
当我们需要提升性能时,性能是一个很重要的问题,有些时候我们需要减少组件的渲染次数,我们就需要在组件内部用shouldComponentUpdate 方法来去判断,或者继承React.PureComponent 类(自动调用shouldComponentUpdate)来实现state和props的浅比较进行判断组件是否重新渲染。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React中,可以混合使用Class组件和Function组件。通常情况下,Class组件用于较复杂的逻辑和状态管理,而Function组件则用于简单和无状态的展示层组件。 下面是一个示例,展示了如何在同一个父组件中混合使用Class组件和Function组件: ```jsx import React, { Component } from 'react'; // Class组件 class Counter extends Component { constructor(props) { super(props); this.state = { count: 0 }; } incrementCount = () => { this.setState(prevState => ({ count: prevState.count + 1 })); } render() { return ( <div> <h2>计数器</h2> <p>当前计数:{this.state.count}</p> <button onClick={this.incrementCount}>增加</button> </div> ); } } // Function组件 const Greeting = () => { return ( <div> <h2>欢迎信息</h2> <p>欢迎来到React混合组件示例!</p> </div> ); } // 父组件 const App = () => { return ( <div> <Greeting /> <Counter /> </div> ); } export default App; ``` 在上述代码中,我们定义了一个Class组件`Counter`和一个Function组件`Greeting`。`Counter`组件有一个计数器状态,并且有一个增加计数的方法。`Greeting`组件只负责展示欢迎信息。 在父组件`App`中,我们将`Greeting`组件和`Counter`组件一起渲染。这样,我们就实现了Class组件和Function组件的混合使用。 请注意,在React 16.8版本之后,引入了Hooks API,使得Function组件也可以具有状态和生命周期的特性,因此在新的React项目中,建议优先使用Function组件和Hooks。但是,仍然可以在需要的情况下使用Class组件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值