Javascript 基于字符串连接从对象获取值
我有一个用React&Typescript编写的小网站,它使用springboot后端。我现在正试图在上面实现多种语言,但我遇到了一个问题 在实现语言之前,这个问题并不存在,因为我可以根据它的名称获取值:Javascript 基于字符串连接从对象获取值,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我有一个用React&Typescript编写的小网站,它使用springboot后端。我现在正试图在上面实现多种语言,但我遇到了一个问题 在实现语言之前,这个问题并不存在,因为我可以根据它的名称获取值: <div className="product-category-list"> {props.productCategory.map(function (item, id) { return <div className="produ
<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.nameEN
或item.nameNL
,而不是值。我尝试了几种方法来修复它,并对其进行了研究,但我找不到关于这个具体问题的任何信息
我正在寻找一种能够获取基于字符串连接构建的项键的值的方法。任何帮助都将不胜感激,因为我被困住了
谢谢大家! 让我们看一看您之前说过的代码:
{item.name}
在这里,您正在访问对象项
的属性名称
在新代码中:
{“item.name”.concat(getLanguage().toUpperCase())}
这里只返回一个值为“item.nameEN”
的字符串,而不访问名为item
的对象
您想要的是仍然访问项
,但要使用动态构建的密钥来访问。试试这个:
{item[“name”+getLanguage().toUpperCase()}
刚刚替换
"item.name".concat(getLanguage().toUpperCase())
与
应该可以正常工作您是否锁定为每种语言使用单独的项目键?为什么不让name元素本身成为一个dictionary,其中key=language,value=required string?这确实解决了这个问题,我不知道它是这样工作的。由于typescript,我不得不实现一些接口交叉,但现在它可以工作了,谢谢!
"item.name".concat(getLanguage().toUpperCase())
item["name" + getLanguage().toUpperCase()