react hooks 之 useEffect的 使用

本文深入探讨React中的Hooks特性,特别是useEffect钩子的使用,它如何替代类组件中的DidMount和DidUpdate生命周期方法,以及如何通过路由切换实现组件销毁的生命周期函数。文章还介绍了useEffect的第二个参数用于控制函数执行条件的高级用法。

这个东西类似于 之前 类的那种写法中的 声明周期函数
useEffect 是 相当于 DidMount 和 DidUpdate 两个周期函数

// 引入
import React,{useState,useEffect} from 'react';
useEffect(() => {
    console.log('111111111111');
  })

进入页面之后 就会打印 1111111

在这里插入图片描述
不过它 还 可以返回一个 函数 用来表示 是 组件 销毁的 声明周期函数

useEffect(() => {
    console.log('111111111111');
    return function(){
      console.log('3333333333333333');
    }
  })

用来表现 组件的销毁状态 只能通过路由的切换来实现 了
引入了 react 中的路由

import React,{useState,useEffect} from 'react';
import { BrowserRouter as Router,Route,Link } from "react-router-dom";

function Hello(){
  useEffect(() => {
    console.log('111111111111');
    return function(){
      console.log('3333333333333333');
    }
  })
  return (
    <>
      我是第一个组件
    </>
  )
}
function World() {
  useEffect(()=>{
    console.log('2222222222222222222');
    return function () {
      console.log('44444444444444');
    }
  })
  return (
    <>
      我是第二个组件
    </>
  )
}
function App() {
  return (
    <div className="App">
      <p>React hooks中的声明周期函数</p>
      <Router>
        <li>
          <Link to="/">第一个组件</Link>
        </li>
        <li>
          <Link to="/world">第二个组件</Link>
        </li>
        <Route path="/" exact component={Hello}></Route>
        <Route path="/world" component={World}></Route>
      </Router>
    </div>
  );
}

export default App;

在这里插入图片描述
也确实实现了 触发了 组件销毁的 函数 不过这样也有一个新的问题了 就是 再点击本路由的时候 它的函数也会执行 这个肯定不是我们想要的 像这样的的效果
在这里插入图片描述
这个时候 还有解决方法 就是 我们的函数 useEffect 还有 第二个参数 我们放个空数组 他就不会 重复执行了

useEffect(() => {
    console.log('111111111111');
    return function(){
      console.log('3333333333333333');
    }
  },[])

其实这个空的数组中可以 放入一个变量 该函数的执行 可以判定为 数组里面的变量是否改变 改变的情况下 才会触发本次函数

关注我 持续更新 前端知识 努力成为大佬

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yunchong_zhao

帮到你了,请作者喝杯矿泉水可好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值