import { jsx, jsxs, Fragment } from 'solid-jsx/jsx-runtime';

/*@jsxRuntime automatic @jsxImportSource solid-jsx*/
const toc = [];
function _createMdxContent(props) {
  const _components = Object.assign({
    p: "p",
    pre: "pre",
    code: "code",
    span: "span"
  }, props.components);
  return jsxs(Fragment, {
    children: [jsx(_components.p, {
      children: "Man kann immer die Referenz eines DOM-Elements in Solid durch Zuweisung bekommen, da das JSX echte DOM-Elemente erzeugt. Zum Beispiel:"
    }), "\n", jsx(_components.pre, {
      children: jsxs(_components.code, {
        className: "hljs language-jsx",
        children: [jsx(_components.span, {
          className: "hljs-keyword",
          children: "const"
        }), " myDiv = ", jsxs(_components.span, {
          className: "xml",
          children: [jsxs(_components.span, {
            className: "hljs-tag",
            children: ["<", jsx(_components.span, {
              className: "hljs-name",
              children: "div"
            }), ">"]
          }), "My Element", jsxs(_components.span, {
            className: "hljs-tag",
            children: ["</", jsx(_components.span, {
              className: "hljs-name",
              children: "div"
            }), ">"]
          })]
        }), ";\n"]
      })
    }), "\n", jsx(_components.p, {
      children: "Allerdings ist es nützlich, nicht alle Elemente herauszubrechen und sie stattdessen in ein einzelnes JSX-Template zu packen, da dies es Solid erlaubt, die Erzeugung besser zu optimieren."
    }), "\n", jsxs(_components.p, {
      children: ["Stattdessen kann man die Referenz zu einem Element in Solid mit dem ", jsx(_components.code, {
        children: "ref"
      }), "-Attribut bekommen. Refs sind grundsätzlich Zuweisungen wie im obigen Beispiel, die während der Erstellung, aber vor dem Einfügen ins DOM passieren. Man kann einfach eine Variable deklarieren und sie wird zugewiesen:"]
    }), "\n", jsx(_components.pre, {
      children: jsxs(_components.code, {
        className: "hljs language-jsx",
        children: [jsx(_components.span, {
          className: "hljs-keyword",
          children: "let"
        }), " myDiv;\n\n", jsxs(_components.span, {
          className: "xml",
          children: [jsxs(_components.span, {
            className: "hljs-tag",
            children: ["<", jsx(_components.span, {
              className: "hljs-name",
              children: "div"
            }), " ", jsx(_components.span, {
              className: "hljs-attr",
              children: "ref"
            }), "=", jsx(_components.span, {
              className: "hljs-string",
              children: "{myDiv}"
            }), ">"]
          }), "My Element", jsxs(_components.span, {
            className: "hljs-tag",
            children: ["</", jsx(_components.span, {
              className: "hljs-name",
              children: "div"
            }), ">"]
          })]
        }), "\n"]
      })
    }), "\n", jsx(_components.p, {
      children: "Also holen wir uns eine Referenz zum Canvas und animieren es:"
    }), "\n", jsx(_components.pre, {
      children: jsxs(_components.code, {
        className: "hljs language-jsx",
        children: ["<canvas ref={canvas} width=", jsx(_components.span, {
          className: "hljs-string",
          children: "\"256\""
        }), " height=", jsx(_components.span, {
          className: "hljs-string",
          children: "\"256\""
        }), " />\n"]
      })
    }), "\n", jsx(_components.p, {
      children: "Refs können auch die Form einer Callback-Funktion annehmen. Das kann nützlich sein, um Logik einzubauen, besonders wenn man nicht erst warten muss, bis das Element eingebunden ist. Zum Beispiel:"
    }), "\n", jsx(_components.pre, {
      children: jsxs(_components.code, {
        className: "hljs language-jsx",
        children: ["<div ref={", jsxs(_components.span, {
          className: "hljs-function",
          children: [jsx(_components.span, {
            className: "hljs-params",
            children: "el"
          }), " =>"]
        }), " ", jsx(_components.span, {
          className: "hljs-comment",
          children: "/* mache etwas mit el... */"
        }), "}>", jsx(_components.span, {
          className: "hljs-title class_",
          children: "My"
        }), " ", jsx(_components.span, {
          className: "hljs-title class_",
          children: "Element"
        }), "</div>\n"]
      })
    })]
  });
}
function MDXContent(props = {}) {
  const {wrapper: MDXLayout} = props.components || ({});
  return MDXLayout ? jsx(MDXLayout, Object.assign({}, props, {
    children: jsx(_createMdxContent, props)
  })) : _createMdxContent(props);
}

export { MDXContent as default, toc };
//# sourceMappingURL=lesson-90a44665.js.map
