react 函数组件和hook

函数组件

1.函数组件没有生命周期
2.函数组件没有this
3.函数组件通过hook完成各种操作
4.函数组件本身就是render函数
5.props在函数第一个参数解释
useState 参考https://www.cnblogs.com/ssszjh/p/14581014.html
props 参考https://www.cnblogs.com/ssszjh/p/18118746
生命周期 useEffect  相当于监听属性 参考https://www.cnblogs.com/ssszjh/p/18122682
useMemo相当于计算属性,可以缓存变量
1.不传第二个参数相当于初始化和更新的时候都会执行, componentDidMount 和 componentDidUpdate
2.第二个参数[],里面没有值表示只在初始化时执行一次相当于componentDidMount
3.第二个参数有值表示只有当arr变化时,才去再次执行
useCallbac缓存方法
useEffect useMemo useCallbac第二个参数都是一样的
useRef和useContext 参考https://www.cnblogs.com/ssszjh/p/18122747
 
import styles from './index.less';
import { Button } from 'antd';
import React, { useCallback, useMemo, useState } from 'react';
const HomePage: React.FC = () => {
  let [arr, setArr] = useState([1, 2, 3])
  let [str, setStr] = useState('sqweqwe')
  // <div>1.不传第二个参数相当于初始化和更新的时候都会执行, componentDidMount 和 componentDidUpdate</div>
  // <div>2.第二个参数[],里面没有值表示只在初始化时执行一次相当于componentDidMount</div>
  // <div>3.第二个参数有值表示只有当arr变化时,我们才去再次执行</div> 
  let all = useMemo(() => {
    console.log(1)
    let _all = 0
    arr.forEach(item => {
      _all += item
    })
    return _all
  }, [arr])
  let changeMes = useCallback(() => {
    setStr(str + '1')
  }, [])
  function changeArr() {
    let newArr = [...arr]
    newArr.push(1)
    setArr(newArr)
  }
  return (
    <div className={styles.container}>
      <h2>函数组件和hook</h2>
      <h3>函数组件</h3>
      <div>1.函数组件没有生命周期</div>
      <div>2.函数组件没有this</div>
      <div>3.函数组件通过hook完成各种操作</div>
      <div>4.函数组件本身就是render函数</div>
      <div>5.props在函数第一个参数解释</div>
      <div>useState 参考test3</div>
      <div>props 参考test5</div>
      <div>生命周期 useEffect 参考test6 相当于监听属性</div>
      <div>useMemo相当于计算属性</div>
      <div>1.不传第二个参数相当于初始化和更新的时候都会执行, componentDidMount 和 componentDidUpdate</div>
      <div>2.第二个参数[],里面没有值表示只在初始化时执行一次相当于componentDidMount</div>
      <div>3.第二个参数有值表示只有当arr变化时,我们才去再次执行</div>
      <div>减少子组件的更新</div>
      <div>{str}</div>
      <Button type="primary" size="small" onClick={changeMes}>修改字符串数据</Button>
      <br></br>
      <Button type="primary" size="small" onClick={changeArr}>修改数组数据</Button>
      <div>{all}</div>
      <div>useCallbac缓存方法</div>
      <div>useEffect useMemo useCallbac第二个参数都是一样的</div>
      <div>useRef和useContext 参考test7</div>
    </div>
  );
};



export default HomePage;

 

posted on 2024-04-08 22:01  sss大辉  阅读(23)  评论(0编辑  收藏  举报

导航