函数式组件

函数式组件

函数式组件中,没有 state 和 生命周期,所以又被称为 无状态组件,在早期 react 版本中,被当前纯渲染组件来用

Hook 使用规则

只在 React 函数中调用 Hook
  • 只在函数组件调⽤Hooks,React Hooks目前只支持函数组件,所以⼤大家别在class组件或者普通的函数⾥面调⽤Hook钩⼦函数
  • React Hooks的应用场景在函数组件,自定义hooks
  • 只在顶层调⽤Hooks Hooks的调⽤,尽量只在顶层作⽤域进行调用不要在循环,条件或者是嵌套函数中调⽤Hook,否则可能会⽆无 ,确保每次组件渲染时都以相同的顺序调⽤Hook
  • 所有的 hook 必须 以 use开头
 // 开头必须是 use
function useSize(){
    return {
        w:window.innerWidth,
        h:window.innerHeight
    }
}
react hooks提供的api,大多都有记忆功能,例如
  • useState
  • useEffect
  • useLayoutEffect
  • useReducer
  • useRef
  • useMemo 记忆计算结果
  • useCallback 记忆函数体
Hooks优势:
  • 函数组件不能使用state,遇到交互更改状态等复杂逻辑时不能更好地支持,hooks让函数组件更靠近class组件,拥抱函数式编程。
  • 解决副作⽤问题,hooks出现可以处理数据获取、订阅、定时执行任务、手动修改 ReactDOM这些⾏为副作用,进行副作用逻辑。比如useEffect。
  • 更好写出有状态的逻辑重用组件。
  • 让复杂逻辑简单化,比如状态管理:useReducer、useContext。
  • 函数式组件比class组件简洁,开发的体验更好,效率更⾼,性能更好。
    更容易发现无用的状态和函数。

常用 hook

  • useState
    const [state, setState] = useState(initialState);
  • useEffect 类组件
    componentDidMount、componentDidUpdate 和 componentWillUnmount
    需要清除的副作用
     // 挂载,更新,卸载三者合一
   useEffect(()=>{
       console.log("组件更新或者挂载");
       return ()=>{
          console.log("组件卸载")
       }
    },[age]);
// 分开写
   useEffect(()=>{
      return ()=>{
         console.log("组件挂载")
      }
   },[]);
   useEffect(()=>{
      return ()=>{
         console.log("组件更新")
      }
   },[]);
   useEffect(()=>{
      return ()=>{
         console.log("组件卸载")
      }
   },[age]);  //监听数据目标
  • useRef
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值