React Classed Components
marcusrognes/react-classed-components
Description
This is very similar to styled-components, but instead of css, you add css classes.
Getting started
1
npm i react-classed-components
Example
index.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import classed from 'react-classed-components';
const Wrapper = classed.main``;
const Container = classed.div`container`;
const Header = classed.header`d-flex justify-content-center py-3`;
const HeaderMenu = classed.ul`nav nav-pills`;
const NavItem = classed.li`nav-item`;
const NavItemLink = classed.a<{active?:boolean}>`nav-link ${(({params})) => params.active && "active" || ""}`;
function App(){
return <Wrapper>
<Container>
<Header>
<HeaderMenu>
<NavItem>
<NavItemLink href="#" active>Home</NavItemLink>
</NavItem>
<NavItem>
<NavItemLink href="#">Features</NavItemLink>
</NavItem>
<NavItem>
<NavItemLink href="#">Pricing</NavItemLink>
</NavItem>
<NavItem>
<NavItemLink href="#">FAQs</NavItemLink>
</NavItem>
<NavItem>
<NavItemLink href="#">About</NavItemLink>
</NavItem>
</HeaderMenu>
</Header>
</Container>
</Wrapper>;
}
Why?
I needed a simple way of defining components for my website, and although styled-components are amazing for component structure and SPA`s, it gives some overhead if used for ssr or pre-rendered html. The styling would be sent for every page, instead of being shared in css files.
This post is licensed under CC BY 4.0 by the author.