1 回答
TA贡献1821条经验 获得超4个赞
可以为此使用chrome.runtime.onConnect(感谢@wOxxOm):
在 React 组件的构造函数中打开一个连接:
constructor(props){
super(props)
this.state = {
dance: false,
}
...
var port = this.xbrowser.runtime.connect();
...
}
componentDidMount在反应组件中添加事件。
async componentDidMount(){
...
// an object from the background is retrieved
let background_object = this.props.getBackgroundObject();
...
// add event (eventemitter3 is used for the event management)
background_object.event.on('onMusic', this.dance);
...
}
async dance() {
this.setState({
'music': true,
})
}
在后台的某个地方(例如background.js)侦听与浏览器的连接,并在连接丢失时删除该事件:
chrome.runtime.onConnect.addListener(function (externalPort) {
externalPort.onDisconnect.addListener(function () {
let background_object = this.props.getBackgroundObject();
background_object.event.removeListener('onSend');
})
})
在我看来,这不是很优雅,但它确实有效。
添加回答
举报