Dynamic
Edit this page<Dynamic> is a Solid component that allows you to render components dynamically based on data.
By passing either a string representing a native HTML element or a component function to the component prop, you can render the chosen component with the remaining props you provide.
import { createSignal, For } from "solid-js"import { Dynamic } from "solid-js/web"
const RedDiv = () => <div style="color: red">Red</div>const GreenDiv = () => <div style="color: green">Green</div>const BlueDiv = () => <div style="color: blue">Blue</div>
const options = {  red: RedDiv,  green: GreenDiv,  blue: BlueDiv,}
function App() {  const [selected, setSelected] = createSignal("red")
  return (    <>      <select        value={selected()}        onInput={(e) => setSelected(e.currentTarget.value)}      >        <For each={Object.keys(options)}>          {(color) => <option value={color}>{color}</option>}        </For>      </select>      <Dynamic component={options[selected()]} />    </>  )}This example renders a <select> element that allows you to choose between three colors.
Once a color is selected, the <Dynamic> component will render the chosen color's corresponding component or element.
<Dynamic> creates more concise code than alternative conditional rendering options.
For example, the following code renders the same result as the previous example:
import { createSignal, Switch, Match, For } from "solid-js"
const RedDiv = () => <div style="color: red">Red</div>const GreenDiv = () => <div style="color: green">Green</div>const BlueDiv = () => <div style="color: blue">Blue</div>
const options = {  red: RedDiv,  green: GreenDiv,  blue: BlueDiv,}
function App() {  const [selected, setSelected] = createSignal("red")
  return (    <>      <select        value={selected()}        onInput={(e) => setSelected(e.currentTarget.value)}      >        <For each={Object.keys(options)}>          {(color) => <option value={color}>{color}</option>}        </For>      </select>      <Switch fallback={<BlueDiv />}>        <Match when={selected() === "red"}>          <RedDiv />        </Match>        <Match when={selected() === "green"}>          <GreenDiv />        </Match>      </Switch>    </>  )}Instead of a more verbose <Switch> and <Match> statement, <Dynamic> offers a more concise way to render components dynamically.
Props
When working with these components, you can pass props to the component you are rendering by passing them to the <Dynamic> component.
This makes them available to the component you are rendering, similar to how you would pass props to components in JSX.
import { Dynamic } from "solid-js/web"
function App() {  return (    <Dynamic component={someComponent} someProp="someValue" />  )}