前端小案例-图片存放在远端服务器

前端小案例-图片存放在远端服务器

项目背景:

一个智能产业园的小程序由于可以控制很多种设备,可能有灯、空调、窗帘等智能设备。

现在面临以下问题:

  1. 需要存放很多设备的图标。
  2. 设备的图标可能会进行修改。

为了解决上面的问题,我们可以将设备的图标保存在远端的服务器。从服务器请求图片到本地进行渲染。

但是这样可能会导致一个新的问题就是如果服务器挂了,小城序的图标就不能够使用了。对此我们的对策是当服务器获取不到图片的时候就使用本地的某张备用照片。

根据上述背景整理出下列案例

案例1

遍历一个设备数组,每个元素li标签里的img需要放一张与元素相关的图片,如果请求服务器没有该地址的图片,或者服务器挂了,则应该使用本地的图片。这应该如何实现呢

在React中,你可以使用数组的map方法来遍历设备数组,并为每个设备渲染相应的<li>元素。对于每个<li>元素中的图片,你可以使用之前提到的逻辑来加载服务器图片并备用本地图片。

以下是一个示例代码,展示了如何在React中实现遍历设备数组并加载相关图片的逻辑:

js 复制代码
import React from 'react';

const DeviceList = ({ devices }) => {
  return (
    <ul>
      {devices.map((device) => (
        <li key={device.id}>
          <img
            src={device.serverImagePath}
            alt="Device Image"
            onError={(e) => {
              e.target.src = require('./defaultImg.png');
            }}
          />
          <span>{device.name}</span>
        </li>
      ))}
    </ul>
  );
}

export default DeviceList;

在上面的代码中,DeviceList组件接受devices作为属性,它是设备数组。map方法用于遍历设备数组,并为每个设备渲染一个<li>元素。其中,src属性被设置为设备的服务器图片路径。如果加载失败,则会触发onError事件处理程序,利用require 导入设置为图片的src属性,从而显示备用的本地图片。这里使用了内联的箭头函数来为每个<img>元素定义事件处理程序。

你可以在父组件中使用DeviceList并传递设备数组:

js 复制代码
import React from 'react';
import DeviceList from './DeviceList';

function App() {
  const devices = [
    { id: 1, name: 'Device 1', serverImagePath: '服务器图片路径1'},
    { id: 2, name: 'Device 2', serverImagePath: '服务器图片路径2'},
    // 其他设备
  ];

  return (
    <div>
      <DeviceList devices={devices} />
    </div>
  );
}

export default App;

确保将每个设备对象中的"服务器图片路径"替换为实际的服务器图片路径,将"本地图片路径"替换为实际的本地图片路径。

这样,对于每个设备,会根据服务器图片路径加载图片,如果加载失败,则会显示备用的本地图片。

相关推荐
大哥您好4 小时前
QEMU 11.1.2 多架构编译指南(x86_64 / aarch64 / riscv64)
linux·服务器
Autumn_ing4 小时前
Design.md生成UI怎么验收?举例运营后台的颜色、状态和数据核对
前端·ui·ai·设计系统·paico·ai生成ui·design.md
远离UE45 小时前
UE5 Substrate Thin Film 源码拆析
开发语言·javascript·ue5
keyipatience5 小时前
JavaScript学习(1)书写位置,变量、数据类型、运算符
开发语言·前端·javascript·css·学习
朱涛的自习室6 小时前
我给 Gemini 4 和 DeepSeek 搞了套「末位淘汰」,AI 干活会更猛吗?(Day 3)
android·前端·后端
Gauss松鼠会6 小时前
高斯数据库(openGauss)的物理存储结构
运维·服务器·数据库·sql·opengauss·经验总结
Android系统攻城狮6 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_prepare_read调用流程与实战(七十四)
linux·运维·服务器·gstreamer音视频·音视频进阶
杨云龙UP6 小时前
PostgreSQL 18.4 数据库整库迁移实战:pg_dump 备份与 pg_restore 恢复完整操作手册
运维·服务器·数据库·postgresql·pg_dump·pg_restore
土星云SaturnCloud8 小时前
土星云智慧服务区方案:AI视觉+边缘计算+视频存管一体化的全场景智能化落地解析
服务器·人工智能·ai·边缘计算
java1234_小锋8 小时前
【技术专题】HTML5 网页技术 - HTML5简介 & HTML5 文档结构
前端·html·html5