javascript - 基于字符串连接从对象中获取值
问题描述
我有一个使用 React 和 Typescript 编写的小型网站,可与 Spring 引导后端一起使用。我现在正在尝试在其上实现多种语言,但我遇到了一个问题。
在实施语言之前,问题不存在,因为我可以根据它的名称获取值:
<div className="product-category-list">
{props.productCategory.map(function (item, id) {
return <div className="product-category-div">
<img className="product-category-image" src={"data:image/png;base64, " + item.picture}/>
<p className="product-category-title">{ item.name }</p>
</div>
})}
</div>
这导致在item.name
网站上以应有的方式显示的价值。
现在代码不同了,因为 item 的 name 属性已更改为多个值(nameEN、nameFR、nameNL、...)。为了实现这一点,语言被保存在应用程序中并且可以被调用。所以现在代码如下:
<div className="product-category-list">
{props.productCategory.map(function (item, id) {
return <div className="product-category-div">
<img className="product-category-image" src={"data:image/png;base64, " + item.picture}/>
<p className="product-category-title">{ "item.name".concat(getLanguage().toUpperCase()) }</p>
</div>
})}
</div>
由于此更改,网站显示字符串item.nameEN
或item.nameNL
在前端而不是值。我已经尝试了几种修复方法并对其进行了研究,但我找不到有关此特定问题的任何信息。
我正在寻找一种能够获取基于字符串连接构建的项目键值的方法。任何帮助将不胜感激,因为我非常卡住。
谢谢!
解决方案
让我们看一下您之前所说的有效代码:
<p className="product-category-title">{ item.name }</p>
在这里,您正在访问name
对象的属性item
。
在您的新代码中:
<p className="product-category-title">{ "item.name".concat(getLanguage().toUpperCase()) }</p>
在这里,您只是返回一个带有值的字符串,"item.nameEN"
而不是访问名为item
.
您想要的是仍然可以访问item
,但是使用您正在动态构建的密钥来执行此操作。尝试这个:
<p className="product-category-title">{ item["name" + getLanguage().toUpperCase()] }</p>