Jag borde nog ha lärt mig det för länge sedan, men tyvärr, här är vi. Det visar sig att du kan berätta vilken funktion du vill att JSX ska använda. Japp, JSX har egentligen bara en primär transformation som den gör. Det gör vinkelfästen i JavaScript till ett funktionssamtal. Så om du skriver en rad så här i JavaScript:
Hello
Efter bearbetning (förmodligen med Babel och JSX-plugin) får du som standard:
React.createElement("div", ( class: "big" ), "Hello");
Men om du inkluderar en direktivkommentar som berättar för JSX att du vill använda din egen funktion kan du ändra den utgången:
/* @jsx myFunction */ Hello
Förvandlas till:
/* @jsx myFunction */ myFunction("div", ( class: "big" ), "Hello");
Det betyder att vi kan skriva vår egen funktion. Lite konstigt, men OK.
Det faktiska användningsfallet är för icke-reaktiva bibliotek, som Preact. Jag lärde mig detta genom att titta på Jason Millers exempel:
Vue kan också göras på detta sätt. Observera att både Vue och Preact skickar denna speciella h
funktion som är avsedd för detta:
Valeri Karpov har också några intressanta användningsfall i sitt blogginlägg, "En översikt över JSX med 3 icke-reagerande exempel".