javascript - 仅基于字符串选择组件而无需在 ReactJS 中切换
问题描述
这基本上是我想要做的:
import image_a from './a.jpg';
import image_b from './b.jpg';
import image_c from './c.jpg';
class Title extends Component {
render() {
// other code here, this.props.param = some string
var letters = [];
for (var i = 0; i < this.props.param.length; i++) {
var componentName = "image_" + this.props.param[i];
letters.push(<img src={componentName}></img>); // DOESNT WORK
}
// other code here
}
}
我有一堆图像,我想从字符串参数动态呈现它们。我可以做一系列
if (this.props.text[i] === 'a') {
letters.push(<img src={image_a}></img>);
}
if (this.props.text[i] === 'b') {
....
我的方法可以通过一些调整来实现吗?还是我将不得不求助于基本上一系列的条件语句?
解决方案
创建一个包含所有图像的对象的文件:
export const images = {img1: require('./img1.jpg')}
然后你可以做
import images from './images';
class Title extends Component {
render () {
this.props.params.map((value,index)=> !images[value]
? null
: <img src={images[value]} key={index} />
));
}
}
请注意,我假设是一个字符串,并且在有条件渲染(使用)value
时应该返回 null
您也可以使用 a和 an但我更喜欢这种方式if
for loop
if statement
推荐阅读
- python - ImportError:没有名为 wmicodes.makes 的模块
- scala - 播放独立 WS 客户端无法在不导入核心播放框架 jar 的情况下上传多部分文件
- php - 下载图像时没有数据
- maven - maven 不会为 java card 3.0.5 创建 cap 文件?
- android - 生产上的 FirebaseRemoteConfigClientException (Android)
- kerberos - 使用 Kerberos 登录的 OpenWebStart 应用程序 - 校验和失败
- python - Flask Upload Image 仅适用于 Localhost,不适用于 Online Server
- linux - 如何使用 jmeter 的“OS Sampler”在 ubuntu 上运行终端的任何命令
- typo3 - TYPO3 域存储库临时更改设置
- asp.net - 如何将使用 MediaRecorder 录制的视频保存到 Asp.NET Core 中的文件中?