react crash course 2024(8) useEffect

  1. 引入
    import { useEffect } from 'react';

    useEffect – React 中文文档
    useEffect 是一个 React Hook,它允许你 将组件与外部系统同步
    有些组件需要与网络、某些浏览器 API 或第三方库保持连接,当它们显示在页面上时。这些系统不受 React 控制,所以称为外部系统。
    每当你的组件渲染时,React 会先更新页面,然后再运行 useEffect 中的代码。换句话说,useEffect 会“延迟”一段代码的运行,直到渲染结果反映在页面上

    useEffect(()=>{},[])//接收一个函数,一个依赖数组
      useEffect(() => {
        const fetchJobs = async () => {
          try {
            const res = await fetch('http://localhost:8000/jobs')
            const data = await res.json()
            setJobs(data)
          } catch (error) {
            console.log('Error fetching data', error);
          }
          finally {
            setLoading(false)
          }
        }
        fetchJobs();
      }, [])
      try {
        throw new Error("这是一个自定义错误");
    
      } catch (error) {
        console.log("捕获到运行时错误:", error.message); // 这里会执行
      }

    接收到数据后渲染html
     

    const JobPage = () => {
    //...
      return (
        loading ? <Spinner/> :(<h1>
          {job.title}
        </h1>)
      )
    }

React Class 组件中,可以使用 `componentDidMount` 和 `componentDidUpdate` 生命周期方法来模拟 `useEffect` 的效果。 1. 在 `componentDidMount` 生命周期方法中,可以执行组件首次渲染后的操作,类似于 `useEffect` 的第一个参数。 2. 在 `componentDidUpdate` 生命周期方法中,可以执行在组件更新后的操作,类似于 `useEffect` 的第二个参数。 下面是一个示例代码,展示了如何在 React Class 组件中使用 `componentDidMount` 和 `componentDidUpdate` 来模拟 `useEffect`: ```javascript import React from 'react'; class MyComponent extends React.Component { componentDidMount() { // 组件首次渲染后执行的操作,类似于 useEffect 的第一个参数 console.log('Component mounted'); // 在这里添加你的逻辑代码 } componentDidUpdate(prevProps, prevState) { // 组件更新后执行的操作,类似于 useEffect 的第二个参数 console.log('Component updated'); // 在这里添加你的逻辑代码 } render() { return <div>My Component</div>; } } export default MyComponent; ``` 在上面的示例中,`componentDidMount` 方法在组件首次渲染后执行操作,而 `componentDidUpdate` 方法在组件更新后执行操作。你可以在这两个方法中添加你的逻辑代码。 注意:在使用 `componentDidUpdate` 方法时,需要注意避免无限循环更新。你可以使用条件语句来检查是否需要执行操作,以避免不必要的更新。 请记住,`componentDidMount` 和 `componentDidUpdate` 是 React Class 组件提供的生命周期方法,与函数组件中的 `useEffect` 不完全相同。如果你使用的是函数组件,可以直接使用 `useEffect` 钩子。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值