热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在前端读取包含大量图像的文件夹

我是React的新手,我的产品在公用文件夹中包含多个图像。文件夹名称是产品名称。

我是React的新手,我的产品在公用文件夹中包含多个图像。文件夹名称是产品名称。

public
--product_1
--product_2
...
--product_n

在每个文件夹内有许多图像,不一定是相等的图像,文件名分别为1.jpg2.jpg,依此类推(实际上,图像的文件名只是一个数字序列)。

因此,实际上,我有这个自定义ProductCarousel组件(一些现有库中对Carousel组件的包装),我想在其中将每个文件夹的名称作为属性传递给App(或任何父组件)并且该组件将简单地遍历将在轮播中显示的图像。

class ProductCarousel extends Component {
constructor(props) {
super(props);
this.state = {
productFolder: this.props.productFolder
}
}
render() {
return (

{ /* I'm doing a pseudo-code here somewhat,just correct me */ }
{this.imagesInProductFolder.map(image =>


{`${this.state.productFolder}

)
}

);
}
}

我的问题:


  1. 这可以用普通的Javascript完成吗?


  2. 如果使用纯Javascript太困难(或不可能)或代码太多,是否有一个React库可以使用以更简单的方式解析?


  3. 如果以上答案是否定的,是否有必要使用像NodeJS这样的服务器端语言(我的最后选择,我想将服务器端和客户端混合在一起是“不好的做法”)? / p>


这三个示例中的任何一个示例代码都将受到赞赏。


是的,可以做到。
添加componentdidmounttryRequire函数将解决此问题。

componentdidmount中,我们将在每个文件夹中进行迭代并导入图像,并将其保存在状态中。
tryRequire函数检查该文件夹中是否存在特定图像。如果结果为假,它将中断componentdidmount

中的迭代

componentDidMount() {
let i = 1;
const pathName = this.props.fileName;
while (this.tryRequire(`./images/${pathName}/${i}.jpg`)) {
import(`./images/${pathName}/${i}.jpg`).then(image => {
this.setState({ images: [...this.state.images,image.default] });
});
i = i + 1;
}
}
tryRequire(path) {
try {
return require(`${path}`);
} catch (err) {
return null;
}
}

更新

实际上,如果将图像与组件保存在同一文件夹或子文件夹中,则此方法将起作用。


推荐阅读
  • 深入解析:React与Webpack配置进阶指南(第二部分)
    在本篇进阶指南的第二部分中,我们将继续探讨 React 与 Webpack 的高级配置技巧。通过实际案例,我们将展示如何使用 React 和 Webpack 构建一个简单的 Todo 应用程序,具体包括 `TodoApp.js` 文件中的代码实现,如导入 React 和自定义组件 `TodoList`。此外,我们还将深入讲解 Webpack 配置文件的优化方法,以提升开发效率和应用性能。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
  • 在处理大规模数据数组时,优化分页组件对于提高页面加载速度和用户体验至关重要。本文探讨了如何通过高效的分页策略,减少数据渲染的负担,提升应用性能。具体方法包括懒加载、虚拟滚动和数据预取等技术,这些技术能够显著降低内存占用和提升响应速度。通过实际案例分析,展示了这些优化措施的有效性和可行性。 ... [详细]
  • 深入浅出 webpack 系列(二):实现 PostCSS 代码的编译与优化
    在前一篇文章中,我们探讨了如何通过基础配置使 Webpack 完成 ES6 代码的编译。本文将深入讲解如何利用 Webpack 实现 PostCSS 代码的编译与优化,包括配置相关插件和加载器,以提升开发效率和代码质量。我们将详细介绍每个步骤,并提供实用示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文详细解析了 Android 系统启动过程中的核心文件 `init.c`,探讨了其在系统初始化阶段的关键作用。通过对 `init.c` 的源代码进行深入分析,揭示了其如何管理进程、解析配置文件以及执行系统启动脚本。此外,文章还介绍了 `init` 进程的生命周期及其与内核的交互方式,为开发者提供了深入了解 Android 启动机制的宝贵资料。 ... [详细]
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • 如何使用ES6语法编写Webpack配置文件? ... [详细]
  • 使用 Vuex 管理表单状态:当输入框失去焦点时自动恢复初始值 ... [详细]
  • Vue应用预渲染技术详解与实践 ... [详细]
  • 在使用SSH框架进行项目开发时,经常会遇到一些常见的问题。例如,在Spring配置文件中配置AOP事务声明后,进行单元测试时可能会出现“No Hibernate Session bound to thread”的错误。本文将详细探讨这一问题的原因,并提供有效的解决方案,帮助开发者顺利解决此类问题。 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • Unity与MySQL连接过程中出现的新挑战及解决方案探析 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
author-avatar
刘华兰2011_423
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有