对 require 的调用期望正好有 1 个字符串文字参数

2023-12-01

我想根据传递下来的道具来渲染图像。第一个注释掉的 filePath 是源文件。我尝试了几种变体,但它总是给我同样的错误。 React 文档并没有真正涵盖在 30 多种不同场景的情况下你会做什么。我可以向该组件添加一个状态并让它包含所有文件变体,但这似乎比必要的工作更多。https://facebook.github.io/react-native/docs/images

 class Weather extends React.Component {
    render() {

    // let filePath = "./weatherimg/01d.png";
   let filePath = `./weatherimg/${this.props.icon.icon}.png`;
   let filePath2 = this.props.icon ? require(filePath) : require(filePath);


return (
  <View >
    <Text>{this.props.location} {this.props.data[0]}</Text>
    <Text>{this.props.data[1]}</Text>
    <Text>Low {this.props.temps.low}, High {this.props.temps.high}</Text>
      <Text>{this.props.icon.description}</Text>
    <View style={{width: 60, height: 60}}>
      <Image source={filePath2} style={{flex: 1}} />
    </View>
  </View>
);
}
}

如果您有大量可能的图像,您可以创建一个object包含所有可能的图像,然后在Image source传递图标名称。

let icons = {
  'sample1': require('./weatherimg/sample1.png')
  ,'sample2': require('./weatherimg/sample2.png')
  ,'sample3': require('./weatherimg/sample3.png')
}

render(){
  return(
    <Image source={icons[this.props.icon.icon]}/>
  )
}

So if this.props.icon.icon is sample1,它将加载该图像。

您还可以创建一个函数来验证请求的图标是否存在,以及如果不返回默认图标

let icons = {
  default: require('./weatherimg/default.png')
  ,'sample1': require('./weatherimg/sample1.png')
  ,'sample2': require('./weatherimg/sample2.png')
  ,'sample3': require('./weatherimg/sample3.png')
}

validateIcons(icon){
  return (icons[icon]) ? icons[icon] : icons['default'];
}

render(){
  return(
    <Image source={this.validateIcons(this.props.icon.icon)}/>
  )
}

这个问题描述了您不能需要动态文件,并提出了一个示例,说明在可能的选项很少的情况下如何处理它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对 require 的调用期望正好有 1 个字符串文字参数 的相关文章

随机推荐

  • 导入变量命名空间

    是否可以使用这样的变量导入名称空间 namespace User Authorization Certificate use namespace 显然这不会运行use声明需要一个常量 但有解决方法吗 Edit 发现了一个 gem 仅适用于
  • Liferay 7 主题中的 jQuery 插件

    我需要一些帮助来理解 Liferay 7 主题 特别是使用 jQuery 插件 因为我遇到了与此线程相同的问题 https web liferay com community forums message boards view messa
  • 由于嵌套节点依赖关系,路径太长

    我正在使用 npm 来安装依赖项 安装完这些后 我想与非技术人员共享我的项目 并且没有 npm 所以我想在应用程序内发送 node modules 但是 由于节点嵌套了依赖项 因此它创建的文件具有很长的路径 217 个字符 node mod
  • 为什么 iTextSharp 中的 GetTextFromPage 返回的字符串越来越长?

    我正在使用最新的iTextSharpnuGet 5 5 8 中的 lib 用于解析 pdf 文件中的一些文本 我面临的问题是GetTextFromPage方法不仅返回应有的页面文本 还返回上一页的文本 这是我的代码 var url http
  • 通过 C# 代码执行 Powershell 命令

    我想通过 C 代码添加 Powershell 命令或脚本 什么是正确的 变量声明 默认值存储在 C 变量中 例如 在 Powershell 中我输入以下行 user Admin 我想在 C 代码中添加这一行 powershell AddSc
  • 在 Ubuntu 20.04 上安装 MySQL 时出现问题

    我正在尝试在 Ubuntu 20 04 中安装 MySQL 8 0sudo apt install mysql server 但是重新安装和使用后仍然出现此错误sudo dpkg configure a Setting up mysql s
  • 如何为一个类实例化更多 CDI bean?

    Note 类似的问题已经在三年前被问过 在 EE 6 的时候 请参阅如何为一个类实例化多个 CDI Weld bean 有什么变化吗EE 7 在 Spring 中 可以通过在 xml conf 中定义相应的 bean 来实例化任何类 也可以
  • PhoneGap 启动图片 iOS Apple Store 提交 [重复]

    这个问题在这里已经有答案了 一如既往地提交iTunesConnect of my PhoneGap申请起来比较麻烦 特别是当我尝试使用时 我看到弹出这条新消息Application Loader Your binary is not opt
  • 面向对象编程。从方法内部调用方法

    如何从类内的函数调用类方法 我的代码是 var myExtension init function Call onPageLoad onPageLoad function Do something 我试过了 onPageLoad 来自 in
  • 如何在Vue Material中设置灵活的网格

    我正在尝试构建一个使用 Vue Material 在网格中渲染用户输入的卡片的界面 卡片正确渲染 然而 我希望我的网格能够以消除间隙的方式弯曲 对齐和交错不同尺寸的卡片 如下所示 下面的代码与上面的网格相对应
  • PHP:使用来自 php 的参数调用 javascript 函数

    我正在尝试使用 PHP 变量参数调用 JavaScript 函数 我尝试了两种方法 在 PHP 中使用 echo 中的脚本标签调用 JavaScript 函数 IE 将 PHP 变量值赋给 JavaScript 变量
  • 为什么 Numba 不改进这个递归函数

    我有一个结构非常简单的真 假值数组 the real array has hundreds of thousands of items positions np array True False False False True True
  • 按组计算平均值

    我有一个类似于此的大型数据框 df lt data frame dive factor sample c dive1 dive2 10 replace TRUE speed runif 10 gt df dive speed 1 dive1
  • 安卓兼容包

    尝试使 Fragments 示例在低于 11 SDK 的版本上运行时 出现错误 setListAdapter new ArrayAdapter
  • 从数据绑定 DevExpress CheckedListBoxControl 获取项目索引

    我试图从以下位置找到特定值的索引选中列表框控件 CheckedListBoxControl 有一个 DataSource DisplayMember ValueMember 分别设置为 DataTable 和两列 现在我必须将 Checke
  • 如何找到我当前位置附近的位置?

    我需要一些关于使用 android 如何找到我所在位置附近的医院 学校 餐厅 的想法 怎么可能 一步步 Google place api用于访问附近的anloaction地标 Step 1 进入API控制台获取Place API https
  • 如何在 OSGi 中使用 Apache POI

    我想在 OSGi 中使用 Apache POI 通过流式 OOXML API SXSSF 编写 Excel 工作簿 流媒体 API 自 POI 3 9 起可用 由于最新的 Apache POI 3 11 jar 不是捆绑包 让 POI 在
  • Android Studio:编译时 APK META-INF/DEPENDENCIES 中复制的重复文件

    我使用此链接中的说明从 Eclipse 导出项目并导入到 Android Studio http developer android com sdk installing migrate html 当我构建时 出现错误 Duplicate
  • PHP 从 MySQL 导出到 CSV

    我需要将数据从 MySQL 导出到 CSV 但需要从特定 ID 导出 表包含 ID ParentID 和名称 下面是导出所有记录的代码
  • 对 require 的调用期望正好有 1 个字符串文字参数

    我想根据传递下来的道具来渲染图像 第一个注释掉的 filePath 是源文件 我尝试了几种变体 但它总是给我同样的错误 React 文档并没有真正涵盖在 30 多种不同场景的情况下你会做什么 我可以向该组件添加一个状态并让它包含所有文件变体