https://thadaw.com/posts/feed.xml

React Import & Export Component Pattern

2021-08-21

Default export

// MyComponent.tsx
const MyComponent = () => <div>Hey, MyComponent</div>;
export default MyComponent;

// App.tsx
import MyComponent from './MyComponent';

Export

// MyComponent.tsx
export const MyComponent = () => <div>Hey, MyComponent</div>;

// App.tsx
import { MyComponent } from './MyComponent';

Rename import

// MyComponent.tsx
export const MyComponent = () => <div>Hey, MyComponent</div>;

// App.tsx
import { MyComponent as MySuperComponent } from './MyComponent';
export const App = () => <MySuperComponent />;

Group all imports and rename

// MyComponent.tsx
export const Switch = () => <div>Hey, Switch</div>;
export const Group = () => <div>Hey, Group</div>;

// App.tsx
import { * as MyComponent } from './MyComponent';
export const App = () => (
    <>
        <MyComponent.Switch />
        <MyComponent.Group />
    </>
);

Re-export all

// MyComponent.tsx
export const Switch = () => <div>Hey, Switch</div>;
export const Group = () => <div>Hey, Group</div>;

// MyParentComponent.tsx
export * from "./MyComponent";

// App.tsx
import { Switch, Group } from './MyParentComponent';
export const App = () => (
    <>
        <Switch />
        <Group />
    </>
);

Re-export, then group all imports and rename

// MyComponent.tsx
export const Switch = () => <div>Hey, Switch</div>;
export const Group = () => <div>Hey, Group</div>;

// MyParentComponent.tsx
export  * as MyComponent from "./MyComponent";

// App.tsx
import { MyComponent } from './MyParentComponent';
export const App = () => (
    <>
        <MyComponent.Switch />
        <MyComponent.Group />
    </>
);

Export type

// MyComponent.tsx
export type Gender = "Male" | "Female"; // Accept only "Male" or "Female"

// App.tsx
import { Gender } from './MyComponent'

Export interface

// MyComponent.tsx
export interface IUser {
    id: string;
    name: string;
}

// App.tsx
import { IUser } from './MyComponent'

Cross published at .NET Thailand

Acknowledgement: Thank you .net thailand team to review this article: dotnetthailand.github.io#84

powered by zola and serene