【问题标题】:React - Redux - subscribe to external eventsReact - Redux - 订阅外部事件
【发布时间】:2016-10-14 23:00:34
【问题描述】:

我有一个 React-redux 应用程序,其中包含存储、操作、reducer 和所有这些东西。所有工作都根据需要。 但是有一个小问题。通过单击一个按钮,我必须显示一个 IFrame,其中加载了另一个 React 应用程序(非常过时的 React)。 即使在这里,所有工作都可以根据需要进行。 不起作用的是捕获从过时的应用程序触发的事件。 触发事件我使用了这样的代码

window.parent.$(window.parent.document).trigger('HIDE_QUOTE_EDIT', {sender: 'quote-edit'});

我尝试在主应用中订阅它

$(document).on('HIDE_QUOTE_EDIT', () => {console.log('Caught hide quote edit');});

但这从来没有按需要工作。

  1. 处理这种情况的最佳方法是什么?
  2. 假设我以某种方式捕获了此事件,如何获取对 dispatch 对象的引用以便调用操作?

谢谢

附:我知道这不是一个正确的设计,但我必须使用我拥有的任何东西。

【问题讨论】:

  • 首先弄清楚如何发送事件并从 iframe 接收它们。这是一个与在 react/redux 中处理外部事件的最佳实践不同的问题,因此请为此创建另一个问题。 -1 来自我,对不起。

标签: javascript jquery reactjs react-redux


【解决方案1】:
  1. 不要使用来自节点的 jQuery,在你的 html 页面中使用来自常规 jQuery 脚本的 jQuery 对象,否则事件不会被捕获
  2. 在您的 mapDispatchToProp 中保存 dispatch 对象,您可以通过 this.props.dispatch 访问它并发送您想要的任何操作

问题解决了。

【讨论】:

    猜你喜欢
    • 2021-11-02
    • 2018-11-03
    • 1970-01-01
    • 2018-06-06
    • 2018-05-02
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多