---
# System prepended metadata

title: Working with Components

---



One of the core conepts of Solid is the idea of components. Components are small pieces of self-contained code that can be reused and combined to build complex UIs. In this guide. we'll covercovering everything you need to know to get started with components in Solid.

## Creating a component

In Solid, components are JavaScript functions that return JSX, a syntax extension for JavaScript that closely resembles HTML.

Let's take a look at an example of a simple Solid component:

```jsx
function MyComponent() {
  return <div>Hello World</div>;
}
```

In this case, the `MyComponent` function returns the JSX expression `<div>Hello World</div>`. This JSX code resembles HTML and defines the structure and content of the component. When Solid transpiles this JSX code into JavaScript, it ultimately renders a `div` element with the text "Hello World" onto the DOM.

Components in Solid can range from simple, like the one shown above, to more complex structures. They can include logic, such as functions, variables, and state management, as well as other nested components.

For example, a slightly more complex component that includes a button that updates the state:

import { createSignal } from "solid-js";

```jsx
function MyComponent() {
  const [count, setCount] = createSignal(0);

  return (
    <div>
      <p>Count: {count()}</p>
      <button onClick={() => setCount(count() + 1)}>Increment</button>
    </div>
  );
}
```

In this example, first we import a function called `createSignal` from Solid. This function allows us to create a reactive state, which means that the state created using `createSignal` will automatically update and distribute changes throughout the application whenever its dependencies change.

Within the `MyComponent` function, we declare a signal called `count`, with the initial value of `count` set to 0. 

:::info
In Solid, a **signal** is 
:::