ReactJS:TypeError:无法读取未定义的属性“纬度”

亨里克

我正在尝试检查我的 SQL 数据库中是否存在latitudelongitude存在,因为目前当它们未定义时,它使我的 Web 应用程序在加载时保持空白,并出现以下错误TypeError: Cannot read property 'latitude' of undefined

我的代码最初是

  const [viewport, setViewport] = useState({
    //If we know where the first device is, use that to center map ELSE just show the whole world map and let user navigate to them
    latitude: Number(device.deviceData[0].latitude) ?  Number(device.deviceData[0].latitude): 38.2700 ,
    longitude: Number(device.deviceData[0].longitude) ? Number(device.deviceData[0].longitude) : 100.8603,
    width:"80vw",
    height:"80vh",
    zoom:Number(device.deviceData[0].latitude) ? 10 : 1
  })

device.deviceData 在 SQL 中从我的表中提取数据。

我调整了它以确保来自 SQL 的数组的长度大于 0,但这对 TypeError 没有影响

  const [viewport, setViewport] = useState ({
    latitude: device.deviceData.length > 0 ?  Number(device.deviceData[0].latitude): 38.2700 ,
    longitude: device.deviceData.length > 0 ? Number(device.deviceData[0].longitude) : 100.8603,
...

我试过使用 console.log 来确保长度真的是 0

  const [viewport, setViewport] = useState => console.log(device.deviceData.length) ({
    latitude: device.deviceData.length > 0 ?  Number(device.deviceData[0].latitude): 38.2700 ,
    longitude: device.deviceData.length > 0 ? Number(device.deviceData[0].longitude) : 100.8603,
...

其他尝试修复:

  const [viewport, setViewport] = useState => console.log(device.deviceData.length) ({
    if (Number(device.deviceData[0].latitude)) {
      latitude: Number(device.deviceData[0].latitude) ?  Number(device.deviceData[0].latitude): 38.2700 ,
      longitude: Number(device.deviceData[0].longitude) ? Number(device.deviceData[0].longitude) : 100.8603,
...
  const [viewport, setViewport] = useState => console.log(device.deviceData.length) ({
    if (Number(device.deviceData[0].latitude) != null) {
      latitude: Number(device.deviceData[0].latitude) > 0 ?  Number(device.deviceData[0].latitude): 38.2700 ,
      longitude: Number(device.deviceData[0].longitude) > 0 ? Number(device.deviceData[0].longitude) : 100.8603,
...
  const [viewport, setViewport] = useState => console.log(device.deviceData.length) ({
    "latitude" in device.deviceData[0] {
      latitude: Number(device.deviceData[0].latitude) > 0 ?  Number(device.deviceData[0].latitude): 38.2700 ,
      longitude: Number(device.deviceData[0].longitude) > 0 ? Number(device.deviceData[0].longitude) : 100.8603,
...

但是以上所有内容的格式都存在错误,所以我不确定它们是否是我只是语法错误的可行选项。

任何意见是极大的赞赏

编辑:发布了device.deviceData在 Redux Developer Tools 下找到的内容

在此处输入图片说明

sminmgr

看着错误TypeError: Cannot read property 'latitude' of undefined我的猜测是价值device.deviceData就是undefined

因此,请验证console.log(device)设备中是否存在 deviceData 字段。

而且,要解决上述问题,您可以尝试

device.deviceData && device.deviceData.lenght>0 && device.deviceData[0].latitude 
? Number(device.deviceData[0].latitude): 38.2700

带有可选链接的更简洁的语法是:

Number(device?.deviceData?.[0]?.latitude || 38.2700) 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ReactJS TypeError:无法读取未定义的属性(读取“地图”)

ReactJS“ TypeError:无法读取未定义的属性'array'”

ReactJS TypeError:无法读取未定义的属性“值”

ReactJs:TypeError:无法读取未定义的属性“ ItemsServices”

ReactJS Uncaught TypeError:无法读取未定义的属性“concat”

ReactJS抛出“ TypeError:无法读取未定义的属性” latLng”

ReactJS-TypeError:无法读取未定义的属性“ 0”

Reactjs TypeError:无法读取未定义的属性“样式”

TypeError:无法读取REACTJS中未定义的属性“值”

Reactjs:TypeError:无法读取未定义的属性“ propTypes”

reactjs:TypeError:无法读取未定义的属性'from'

ReactJS:TypeError:无法读取未定义的属性“ map”

TypeError:无法使用ReactJs读取未定义的属性“ map”

reactjs错误-TypeError:无法读取未定义的属性“地图”

Reactjs TypeError:无法读取未定义的属性“ city”

ReactJs:TypeError:无法读取未定义的属性“ PropTypes”

TypeError:无法读取未定义的--reactjs属性'props'

TypeError:无法读取未定义ReactJS的属性“ push”

TypeError:无法读取reactjs中未定义的属性'map'

TypeError:无法读取未定义的Reactjs的属性“ map”

ReactJS-TypeError:无法读取未定义的属性“ raw”

TypeError:无法读取ReactJS中未定义的属性'focus'

ReactJs-TypeError:无法读取未定义的属性“ map”

ReactJS TypeError:无法读取未定义的属性“历史”

TypeError:无法读取未定义的Reactjs的属性“ map”?

reactjs错误:TypeError:无法读取未定义的属性“ props”

Uncaught TypeError:无法读取未定义的属性“结果”-ReactJS

Reactjs:TypeError:无法读取未定义的属性“结果”

Reactjs:TypeError:无法读取未定义的属性“值”