【发布时间】:2015-01-11 05:13:56
【问题描述】:
我正在制作一个 Chrome 扩展程序,在页面上插入 2 个不同的 React 扩展程序。当在第一个中选择其他内容时,我想通过向第二个发送带有适当数据的事件来使它们中的每一个保持同步。
在向其他组件发送事件方面是否有最佳实践?
我从一开始就尝试过:
evt = new CustomEvent("selectedEmailChange", {
detail: {
email: data.email
}
});
window.dispatchEvent(evt);
然后在第二个:
componentDidMount: function() {
this.listenForEmailChange();
},
componentWillUnmount: function() {
window.removeEventListener("selectedEmailChange", this.handleEmailChange, false);
},
listenForEmailChange: function() {
window.addEventListener("selectedEmailChange", this.handleEmailChange, false);
},
handleEmailchange: function() {
debugger
console.log("i heard you dog!");
},
但是在第二个中没有任何东西被捕获。
【问题讨论】:
-
看起来订阅 componentDidMount 中的事件是最佳实践...facebook.github.io/react/tips/…
-
尝试 window.postMessage 代替 - 我猜作为扩展你不能发布这样的消息。 stackoverflow.com/questions/9602022/…
-
@pherris 我用它与其他地方的主机页面进行通信,它确实有效。
标签: javascript javascript-events google-chrome-extension reactjs