react函数组件是怎样执行的?

本文详细解析了React函数组件的执行过程,从初始化开始,解释了useState、useEffect、useMemo和useCallback的执行顺序和作用。useState用于创建状态和更新状态的方法,useEffect则用于副作用处理,useMemo和useCallback则根据依赖项进行优化,减少不必要的计算和函数创建。当状态变更时,组件重新渲染,相关hook也会依据新状态进行执行。

react函数组件是怎样执行的?

总结:

1.首先初始化,会按顺序执行组件中的所有函数,然后组件被挂载到根节点上。

  • 遇到useState执行会生成一个state和setState存在当前组件作用域中
  • 遇到useEffect之后回去订阅其中的消息,然后再组件挂载后去发布消息
  • 遇到useMemo或者useCallback就会根据他们依赖的状态去缓存,属性(函数返回结果值)或方法

2.当setState状态改变后,又会去执行对应的组件函数。

  • 遇到useState也会去执行,返回修改后的状态(指向新的地址,所以可以用const)
  • 遇到useEffect、useMemo、useCallback就会根据第二个参数中的状态依赖,来判断怎样执行。
import React , {useState,useEffect,useMemo,useCallback} from 'react'

const Com= () => {
  const [state,setState]=useState(false)//执行返回 const的state和setState
  useEffect(()=>{
  },[state])//根据返回的state去判断,执行
  useMemo(()=>{
    return 1
  },[state])//根据返回的state去判断缓存属性(函数返回结果值)
  useCallback(()=>{
  },[state])//根据返回的state去判断缓存方法
  function func(){
    console.log('执行func')
  }
  func()//每次setState去触发视图更新之后,都会被执行
  return (
    <div onClick={()=>{setState(!state)}}>{state}</div>
  )
}

export default Com
### React组件函数组件的定义及区别 React 提供了两种主要的组件类型:类组件函数组件。以下是它们的定义、用法及区别的详细说明。 #### 定义 - **类组件**是基于 ES6 的 `class` 关键字实现的,继承自 `React.Component` 或 `React.PureComponent`[^1]。它通过构造函数接收 `props` 并初始化 `state`,并且可以包含生命周期方法。 - **函数组件**是一种更简单的组件形式,使用 JavaScript 函数定义[^1]。在 React 16.8 引入 Hooks 后,函数组件也可以管理状态和副作用。 #### 用法 - **类组件**的定义如下: ```javascript class MyClassComponent extends React.Component { constructor(props) { super(props); this.state = { count: 0 }; // 初始化状态 } render() { return <div>Count: {this.state.count}</div>; } } ``` - **函数组件**的定义如下(结合 Hooks 使用): ```javascript function MyFunctionComponent(props) { const [count, setCount] = React.useState(0); // 初始化状态 return <div>Count: {count}</div>; } ``` #### 区别 1. **语法复杂度**:类组件需要更多的样板代码,如 `constructor` 和 `render` 方法,而函数组件更加简洁[^1]。 2. **状态管理**:类组件通过 `this.state` 管理状态,函数组件通过 `useState` Hook 管理状态[^1]。 3. **生命周期方法**:类组件支持生命周期方法(如 `componentDidMount` 和 `componentWillUnmount`),而函数组件通过 `useEffect` Hook 实现类似功能。 4. **性能优化**:`React.PureComponent` 是类组件的优化版本,而函数组件可以通过 `React.memo` 进行性能优化[^1]。 5. **可读性**:函数组件通常更易于阅读和维护,尤其是在逻辑简单的情况下[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值