Files
supabase/studio/components/README.md
Isaiah Hamilton ca8579803b fix: typo
2021-12-02 22:36:13 -05:00

48 lines
1.4 KiB
Markdown

# Writing components
## Where to create your components
- For components that declare the general structure and layout of a page:
- `/components/layouts/xxx`
- For components that are tightly coupled to a specific interface:
- `/components/interfaces/xxx`
- For components that are meant to be reusable across multiple pages:
- `/components/ui/xxx`
- Note: We're gradually moving files out of the `to-be-cleaned` folder into the respective folders as we refactor
## Component structure
- If a component has constants and utility methods that are tightly coupled to itself, keep them close to the component and enclose them in a folder with an `index.tsx` as an entry point
- Otherwise it can just be a file on its own
- For example:
- ```
components/ui
- SampleComponentA
- SampleComponentA.tsx
- SampleComponentA.constants.ts
- SampleComponentA.utils.ts
- SampleComponentA.types.ts
- index.ts
- SampleComponentB.tsx
```
## Template for building components
```ts
import { FC } from 'react'
import { observer } from 'mobx-react-lite'
// Declare the prop types of your component
interface Props {
sampleProp: string
}
// Name your component accordingly
const ComponentA: FC<Props> = ({ sampleProp }) => {
return <div>ComponentA: {sampleProp}</div>
}
// Observer is so that components listen to mobx store changes
export default observer(ComponentA)
```