javascript - How to implement Broadcast Channel API in React - Stack Overflow

I need to check when the user opens a new tab if there any other tabs are opened in the browser. So whe

I need to check when the user opens a new tab if there any other tabs are opened in the browser. So when we can able to find that there are no tabs opened already, then we need to do some operations if not we can just leave

How can we achieve this using Broadcast Channel API?

Especially how to implement this concept in React?

Thanks in Advance!!

I need to check when the user opens a new tab if there any other tabs are opened in the browser. So when we can able to find that there are no tabs opened already, then we need to do some operations if not we can just leave

How can we achieve this using Broadcast Channel API?

Especially how to implement this concept in React?

Thanks in Advance!!

Share Improve this question asked May 24, 2022 at 18:26 Dante1021Dante1021 3942 gold badges12 silver badges26 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 3

I will answer the second part of your question "Especially how to implement this concept in React?"

I will give an example of implementing multi-tab logout.

Create a file somewhere in your App , I created mine in a folder called Auth and created a file named auth.js

import { BroadcastChannel } from 'broadcast-channel';

const logoutChannel = new BroadcastChannel('logout');

export const login = () => {
    localStorage.setItem("token", "this_is_a_demo_token")
    history.push('/app/dashboard')
}


export const logout = () => {
    logoutChannel.postMessage("Logout")
    localStorage.removeItem("token", 'this_is_a_demo_token' )
    window.location.href = window.location.origin + "/";

}

export const logoutAllTabs = () => {
    logoutChannel.onmessage = () => {
        logout();
        logoutChannel.close();
       
        
    }
}

As you can see, I use this dependency npm i broadcast-channel for simplicity with my React App.

Create an instance called logoutChannel with the name 'logout'. On logging out , the instance sends a post message ('Logout').

Use the logoutAllTabs function in your App.js file as follows

import React, { useEffect } from "react";
import { logoutAllTabs } from "./auth/auth";
import Router from "./routes";


function App() {
useEffect(() => {
 logoutAllTabs()
}, [])

  
  return (
    <>
    
     <Router/> // All routes here
    
    </>
  );
}

export default App;

Kindly follow this tutorials to see the above implementation in action :

1.) https://youtu.be/mb5nuUbvfvM

2.) https://dev.to/demawo/how-to-logout-of-multiple-tabs-react-web-app-2egf

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745110953a4611847.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信