React Hooks中的useState、useEffect、useMemo的使用

1、useState:获取需要的state和更新state的方法

     const  [state,setState]=useState(initialState)

    参数:initalState:当前state的初始值,也可以是一个函数(参数只会在组件的初始渲染中起作用)

 返回值:返回值是一个数组,[当前state的值,更新state的方法]

例:

function Example() {
  const [count, setCount] = useState(0);  // 声明一个叫 "count" 的 state 变量,0为count的初始值

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count + 1)}>
        Click me
      </button>
    </div>
  );
}

2、useEffect:每次渲染之后执行

useEffect(didUpdate)

参数:function,每次渲染之后执行,在此function可执行更新dom或添加订阅等操作

返回值:function,可以不返回任务内容,如果didUpdate中返回了一个function,这个function会在组件卸载前执行,

              因此需要清除上次订阅的内容可以在这个function里写

执行条件:useEffect的第二个参数是一个数组,只有当数组中的值发生变化才会执行,如果执行在第一次挂载或卸载时只传[]

例:

export function getStatus(id){

    const searchingStatus=async()=>{} //根据id查询状态

    const stopSearchStatus=async()=>{}//取消查询

    useEffect(()=>{

              searchingStatus();

               return stopSearchStatus;

    },[id]);

   return (<div></div>)

}

3、useMemo:减少不必要的渲染

   function Example({exam1,exam2}){

            const comp1=useMemo(()=><Comp1 exam1={exam1} />,[exam1]);

            const comp2=useMemo(()=><Comp2 exam2={exam2} />,[exam2]);                

          //只有在第二个参数数组中的值发生变化时,才会重新渲染

     return (

        <>

    {comp2}

    {comp1}

   </>      

  )

}

 

 

 

引用\[1\]:在React中,memo是一个高阶组件,用于优化函数组件的性能。它类似于React.PureComponent,通过对内部对象进行浅比较来判断是否重新渲染组件。\[2\]useEffectReact提供的一个Hook函数,用于在函数组件中执行副作用操作。它可以在组件渲染完成后执行一些异步操作,比如发送网络请求、订阅事件等。\[3\]useMemoReact提供的另一个Hook函数,用于在函数组件中进行性能优化。它可以缓存计算结果,避免重复计算,类似于Vue中的computed属性。\[1\]useRef是React提供的一个Hook函数,用于在函数组件中创建一个可变的引用。它可以用来保存组件的状态,或者获取DOM元素的引用。\[1\]useStateReact提供的一个Hook函数,用于在函数组件中创建一个可变的状态。它返回一个数组,第一个元素是当前的状态值,第二个元素是更新状态的函数。 所以,react memo用于优化函数组件的性能,useEffect用于执行副作用操作,useMemo用于缓存计算结果,useRef用于创建可变的引用,useState用于创建可变的状态。 #### 引用[.reference_title] - *1* *2* [useMemo,memo,useRef等相关hooks详解](https://blog.youkuaiyun.com/weixin_44441196/article/details/117328033)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [一文轻松掌握react-hook(useState、useReducer、useEffect、useCallback、useMemo、useRef、useContext...)](https://blog.youkuaiyun.com/u010074572/article/details/105176653)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值