浏览器页签间通信
1. 何时使用
2. 如何使用
import { broadcast } from "nc-lightapp-front";
3. 能力特性
注意 事件绑定了一定要注销避免内存泄露。
import React, { Component } from 'react';
import './broadcastChannelA.less';
import { broadcast, base } from 'nc-lightapp-front';
const { NCButton } = base;
class broadcastChannelA extends Component {
componentWillMount() {
broadcast.on('TabBroadcast', (obj, key) => {
console.log(obj, key);
let arr = [];
// console.log(obj);
// 注意 这个条件一定要有 这个事件触发是很频繁的 所有的非本页面ajax都会触发 没有条件或许会导致多次刷新
if (obj && obj.url && arr.indexOf(obj.url) !== -1) {
// TODO
}
});
window.broadcast = broadcast;
}
onClick() {
broadcast.broadcast('TabBroadcast', new Date().getTime());
}
render() {
return (
<div>
这是一个broadcastChannel的示例
<NCButton onClick={this.onClick}>点击发送消息</NCButton>
</div>
);
}
componentWillUnmount() {
broadcast.off('TabBroadcast');
}
}
export default broadcastChannelA;
4. API
4.1 broadcast
调用样例 : broadcast.broadcast(eventName, message)
说明 : 发送消息的方法
参数说明:
| 参数 | 说明 | 类型 | 默认值 | 备注 |
|---|---|---|---|---|
| eventName | 消息名对应事件名 | String | ||
| message | 信息内容 | String/JsonObject | 方法内会进行 JSON.stringify |
4.2 on
调用样例 : broadcast.on(eventName, fn, unique, newBind)
说明 : 消息事件绑定
参数说明:
| 参数 | 说明 | 类型 | 默认值 | 备注 |
|---|---|---|---|---|
| eventName | 消息名对应事件名 | String | ||
| fn | 事件回调 | Funciton | 这个方法里一定要判断来源、否则会导致性能问题 | |
| unique | 事件是否唯一 | Boolean | true | |
| newBind | 事件是否新绑定 | newBind | false |
4.3 off
调用样例 : broadcast.off(eventName, fn)
说明 : 消息事件注销
参数说明:
| 参数 | 说明 | 类型 | 默认值 | 备注 |
|---|---|---|---|---|
| eventName | 消息名对应事件名 | String | ||
| fn | 事件回调 | Funciton | 这个方法里一定要判断来源、否则会导致性能问题 |
4.4 offAll
调用样例 : broadcast.offAll
说明 : 消息事件注销所有
参数说明: 无
返回值说明 : 返回 undefined
