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

如何通过动态键访问JavaScript嵌套对象获取响应式图片路径

问题原因

你当前的写法错误核心是:方括号语法访问对象属性时,传入的字符串不需要包含点语法的前缀.
你imageSizer返回的.mobile这类字符串,对应的键名实际是带.的字符串,和你对象里定义的mobile键完全不匹配,自然取不到值。

修正方案

第一步:修改imageSizer返回值,去掉前缀.

const windowSizeInitial = window.innerWidth 

const imageSizer = (windowSize = windowSizeInitial) => {
    if(windowSize <= 600) {
      return "mobile"
    } else if (windowSize <= 1400) {
      return "tablet"
    } else {
      return "desktop"
    }
  } 

第二步:保持原有img标签写法即可正常取值

src={data ? `${process.env.PUBLIC_URL}${data[0].gallery.first[imageSizer()]}` : ""} alt="product" 

附加优化(可选)

如果需要窗口尺寸变化时自动切换图片,仅监听初始宽度不满足需求,需要新增resize事件监听,以React框架为例的实现参考:

import { useState, useEffect } from 'react'

const ProductImage = ({data}) => {
  const [imgSize, setImgSize] = useState(imageSizer())

  useEffect(() => {
    const handleResize = () => setImgSize(imageSizer(window.innerWidth))
    window.addEventListener('resize', handleResize)
    return () => window.removeEventListener('resize', handleResize)
  }, [])

  return (
    <img 
      src={data ? `${process.env.PUBLIC_URL}${data[0].gallery.first[imgSize]}` : ""} 
      alt="product" 
    />
  )
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:54:03