React网络请求时机

🚀 React网络请求时机的奇妙旅程

🌍 网络请求:组件的"外卖订餐"

想象React组件是一个家庭,而发起网络请求就像订外卖。那么问题来了:什么时候打电话订餐最合适?

太早: 家还没收拾好
正合适: 家收拾好了
太晚: 都要睡觉了
完美时机!
组件生命
何时订外卖?
组件未准备好
componentDidMount/useEffect
componentWillUnmount
数据加载成功

🏠 类组件中的请求时机

1️⃣ componentDidMount:完美时机

生活类比: 这就像搬入新家后才订外卖。房子已经准备好了,家具都摆放好了,现在正是点外卖的最佳时机!

class WeatherDashboard extends React.Component {
  constructor(props) {
    super(props);
    this.state = { temperature: null, isLoading: true };
    // 🛑 不要在这里发请求!家具还没摆好呢!
  }
  
  componentDidMount() {
    // ✅ 完美时机!DOM已准备好,组件已挂载
    fetch('https://weather-api.example.com/current')
      .then(response => response.json())
      .then(data => {
        this.setState({ 
          temperature: data.temperature,
          isLoading: false
        });
      })
      .catch(error => {
        console.error('天气加载失败', error);
        this.setState({ isLoading: false });
      });
  }
  
  render() {
    const { temperature, isLoading } = this.state;
    return (
      <div>
        {isLoading ? (
          <p>正在加载天气数据...</p>
        ) : (
          <p>当前温度: {temperature}°C</p>
        )}
      </div>
    );
  }
}

要点:

  • 组件已完全挂载到DOM
  • 可以安全地进行状态更新
  • 用户已看到初始UI,可以显示加载状态

2️⃣ 其他选择:为什么不选它们?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

前端熊猫

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值