javascript - 从字符串变量调用 Redux 的调度函数
问题描述
我有一个因各种原因而被重用的组件。从组件中,我根据 url 参数更新商店的不同部分。我在尝试根据传递的字符串调用调度函数时遇到问题。这是我的导入:
import {updateUnassignedListingLeads, updateAssignedListingLeads} from "../../actions";
然后我的代码调用调度。如果我将 updateAssignedListingLeads 放在 storeName 所在的位置,它就可以工作。我还检查了输入的 url 是否正确。它说它不是一个函数。
reloadFilteredListingLeads = () =>{
let curr = this
var url = this.removeParameter()
const parsed = queryString.parse(this.props.location.search);
let column = parsed.column
let order = parsed.order
let term = parsed.term
let filters = parsed.filters
let group = parsed.group
const vals = {
column: column,
order: order,
filters: filters,
term: term
};
let strip = url.replace("/", "");
const storeName = eval('update' + group.charAt(0).toUpperCase() + group.slice(1));
axios.post('/filtered-' + strip, vals, headers).then(response => {
curr.props.dispatch(storeName(response.data))
});
}
这是文件的底部。我知道它可以在不尝试使用字符串变量作为调度操作的情况下工作。如果我用 updateAssignedListingLeads 替换 storeName ,那么它可以工作。
const mapStateToProps = (state) =>{
return {
app: state.app,
}
}
export default withRouter(connect(mapStateToProps)(ListingCoordinatorDetail));
任何帮助将不胜感激。谢谢!
解决方案
好的,所以我必须以不同的方式导入它并将其添加到 eval 中,如下所示:
import * as Update from '../../actions';
const storeName = eval(Update['update' + group.charAt(0).toUpperCase() + group.slice(1)]);
推荐阅读
- archer - RSA Archer - 多种应用程序布局及其使用
- postgresql - 跨数组值扩展结果集
- javascript - Jest 的 Marble 测试失败,但 Jasmine 的等效测试成功
- python - 熊猫错误:[
] - javascript - AWS S3 无法访问的主机
- angular - 警报在http响应中自行消失,无需等待用户点击ok
- python - 如何使用 numpy 进行 CDF 点评估?
- c++ - C++ 对现有或新变量的条件引用
- php - Apache 持有 PHP 文件的文件锁定直到关闭
- django - PyCharm:使用 Heroku 运行 Django 测试