Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@daniele-zurico
Created January 11, 2019 14:12
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save daniele-zurico/0071cfa2667bfd0d20cad5044a84f617 to your computer and use it in GitHub Desktop.
Save daniele-zurico/0071cfa2667bfd0d20cad5044a84f617 to your computer and use it in GitHub Desktop.
import React, { createContext, useState, useContext } from "react";
const context = createContext({
activeTabId: "a",
changeTab: (id: string) => {}
});
const Tab = ({ id, children }: any) => {
const tab = useContext(context);
return <div onClick={() => tab.changeTab(id)}>{children}</div>;
};
const TabPanel = ({ whenActive, children }: any) => {
const tab = useContext(context);
return tab.activeTabId === whenActive ? children : null;
};
const TabSwitcher = ({ children }: any) => {
const [activeTabId, setActiveTab] = useState<string>("a");
const changeTab = (newTabId: any) => {
setActiveTab(newTabId);
};
return (
<context.Provider
value={{
activeTabId: activeTabId,
changeTab: changeTab
}}
>
{children}
</context.Provider>
);
};
export default TabSwitcher;
export { Tab, TabPanel };
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment