【问题标题】:ReactJS & Electron - Execute Function passed by variable: stringReactJS & Electron - 执行由变量传递的函数:字符串
【发布时间】:2017-05-21 08:36:57
【问题描述】:

给定一个变量 foo='someFunc',我希望能够调用 someFunc()。

有一篇关于纯 javascript 的相关文章正是这样做的here

我似乎无法使用 React 实现目标。

我目前在做returnFuncFromString():

export default (func: string) => {
  switch (func) {
    case 'UpAvlToast': return toasts.UpAvlToast();
    case 'UpRcvdToast': return toasts.UpRcvdToast();
    default:
      return null;
  }
};

但是在几张地图之后,这将变得难以管理。它用于将消息常量和图标变量传递给 toastr 组件。拥有数百个预配置对并不奇怪,所以我希望有更多的动态。

在 java 和纯 javascript 中也有类似的问题,但由于主线程和渲染线程的 electron 分叉涉及window 查找问题,因此它们并没有太大帮助。

【问题讨论】:

  • 既然你打电话给toasts.<func>,为什么不叫toasts[func]()
  • 我猜你想要的是func => toasts[func] ? toasts[func]() : null " 但由于涉及到窗口查找问题" window 是一个对象。您可以将相同的解决方案应用于任何其他对象。
  • 谢谢大家 - 括号方法按照您的建议工作。将接受作为答案发布的那个 - 但要再次接受。

标签: javascript node.js reactjs electron


【解决方案1】:

如果所有函数都是对象toasts的方法,那么你应该可以使用括号表示法如下:

export default (func) => toasts[func] ? toasts[func]():null;

箭头函数将返回三元运算符的结果(toasts[func] 求值的值存在或null

如果toasts 上存在与变量func 匹配的方法,则会返回该方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 2016-01-17
    • 2020-10-03
    • 2016-12-03
    • 2012-09-10
    相关资源
    最近更新 更多