实现一个只能打开一个tab的hook
浏览器怎么获取到当前网页打开了多个,主要有两种方式,
BroadcastChannel的方式:两个tab之间发送消息
如果打开了多个tab:
tab页A:有人吗
tab页B:有人
如果只有一个tab:
tab页A:有人吗
。。。一直没回应
LocalStorage的方式,看变量是否被修改了
页面挂载时改为true,表示已经有人了
退出时改为false,表示没人了
BroadcastChannel
准确性高。异步
LocalStorage
会被修改,准确性不高。同步
异步,造成最开始的一段时间,无法判断是不是真的有没有其他tab页打开
在react中,表现为,两种状态下的组件都会被渲染。
在判断的时候,用LocalStorage给定初始值,LocalStorage是同步的,不会渲染其他的状态。
对于LocalStorage被修改或者错误的情况,用BroadcastChannel进行修正,最终结果以BroadcastChannel为准。