javascript - ReactJS 模板文字作为变量名
问题描述
我想知道是否可以将 templateLiteral 评估为变量名,然后使用它来引用导入。
到目前为止,这是我的代码:
//These are redux action types
import * as fileTypeOneActions from "./fileTypeOne/actionTypes"
import * as fileTypeTwoActions from "./fileTypeTwo/actionTypes"
import * as fileTypeThreeActions from "./fileTypeThree/actionTypes"
export const updateApiResponse = (reducer, apiResponse) => {
//reducer can be"fileTypeOne", "fileTypeTwo", or "fileTypeThree" as arguments
const reducerKey = eval(`${reducer}Actions`)
return {
type: reducerKey.UPDATE_API_RESPONSE,
apiResponse: apiResponse,
}
}
基于作为 'reducer' 参数传递的字符串,我想引用正确的导入并返回正确的 redux 操作类型。有任何想法吗?
上面的 eval 语句不起作用。
解决方案
稍微不同的版本可以更好地映射到您的输入:
//These are redux action types
import * as fileTypeOneActions from "./fileTypeOne/actionTypes"
import * as fileTypeTwoActions from "./fileTypeTwo/actionTypes"
import * as fileTypeThreeActions from "./fileTypeThree/actionTypes"
const actions = {
fileTypeOneActions,
fileTypeTwoActions,
fileTypeThreeActions
};
export const updateApiResponse = (reducer, apiResponse) => {
const reducerKey = actions[`${reducer}Actions`];
return {
type: reducerKey.UPDATE_API_RESPONSE,
apiResponse: apiResponse,
}
}
使用对象作为地图是要走的路。我看不出这不是动态的(如您对另一个答案的评论中所述)。
推荐阅读
- flutter - 如何在firestore中向我的数组/列表添加时间戳?
- wpf - 在 WPF 项目中包含 UWP 项目会引发运行时错误
- excel - 遍历命名范围并选择行和列
- google-cloud-platform - 来自托管 Cloud Run 的 JDBC 连接?
- python-3.x - 将字符串附加到字符串列表
- cognos-11 - 我想创建交叉表来计算每年的项目总数和活动项目
- r - R SHINY:根据 selectInput/numericInput 选项清除/更新 mainPanel
- javascript - 如何添加事件侦听器以触发服务器端电子邮件功能?
- java - 如何以确定的顺序遍历 Guava 图?
- tomcat - 将 Web 应用程序从 GlassFish 移动到 Tomcat 9,给出 java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer