You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中窗口尺寸变化时切换图片:三元运算符尝试无效求助

React窗口尺寸变化切换图片的修复方案

你写的代码有几个问题导致没生效,下面是修正后的实现:

问题点

  1. 未导入桌面端的cclogo图片,代码里使用了该变量但未声明导入
  2. 获取窗口宽度应该用window.innerWidth,而非window.width
  3. 三元运算符里错误地用{cclogo}这种对象形式,img的src需要直接传递图片路径变量
  4. 未监听窗口尺寸变化事件,窗口调整大小时组件不会重新渲染更新图片

正确代码

import cclogomobile from '../../assets/cc-logo-mobile.svg';
import cclogo from '../../assets/cc-logo.svg'; // 补上桌面端图片导入
import React, { useState, useEffect } from 'react';

export default function ImageComponent() {
  // 存储当前窗口宽度的状态
  const [windowWidth, setWindowWidth] = useState(window.innerWidth);

  // 监听窗口resize事件
  useEffect(() => {
    const updateWidth = () => {
      setWindowWidth(window.innerWidth);
    };

    window.addEventListener('resize', updateWidth);
    // 组件卸载时移除监听,避免内存泄漏
    return () => window.removeEventListener('resize', updateWidth);
  }, []);

  return (
    <>
      <img 
        src={windowWidth > 700 ? cclogo : cclogomobile} 
        alt="cclogo" 
      />
    </>
  );
}

关键说明

  • 用useState存储窗口宽度,宽度变化时会触发组件重新渲染
  • 通过useEffect添加resize事件监听,实时更新宽度状态
  • 去掉图片变量外的多余花括号,直接将导入的图片路径传给src属性
  • 必须补充桌面端图片的导入语句,否则变量会报错

内容的提问来源于stack exchange,提问作者user15107481

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 06:30:56