--- title: 'Introduction' description: 'Components in Yew' --- ## What are Components? Components are the building blocks of Yew. They manage an internal state and can render elements to the DOM. Components are created by implementing the `Component` trait for a type. ## Writing Component's markup Yew uses Virtual DOM to render elements to the DOM. The Virtual DOM tree can be constructed by using the `html!` macro. `html!` uses a syntax which is similar to HTML but is not the same. The rules are also much stricter. It also provides superpowers like conditional rendering and rendering of lists using iterators. :::info [Learn more about the `html!` macro, how it is used and its syntax](concepts/html/introduction.mdx) ::: ## Passing data to a component Yew components use _props_ to communicate between parents and children. A parent component may pass any data as props to its children. Props are similar to HTML attributes but any Rust type can be passed as props. :::info [Learn more about the props](advanced-topics/struct-components/properties.mdx) ::: :::info For other than parent/child communication, use [contexts](../../concepts/contexts.mdx) :::