Ampersand escapes in text content handled differently to JSX
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 38/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- javascript
- Área
- frontend
Línea de trabajo
Comienza con el punto de entrada de tagged template mostrado en la reproducción: htm.bind(h) y el contenido de texto dentro del template. Compara cómo se tokenizan los escapes literales de ampersand y las cadenas interpoladas, usando la salida de VNode proporcionada como referencia. Se considera terminado cuando las entidades de texto como \u0026lt; producen el texto decodificado correspondiente, de forma coherente con JSX, sin romper la interpolación.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Reproduction
With the following code:
import htm from "https://unpkg.com/htm@2.1.1/dist/htm.mjs";
import { h } from "https://unpkg.com/preact@8.4.2/dist/preact.mjs";
const html = htm.bind(h);
console.log(html`<div><</div>`)
I get a VNode with .children = ["<"] — i.e. what I mean to render as < gets rendered as < instead.
Expected results
Testing this in JSX via say https://jsx.egoist.moe/?mode=vue, <div><</div> gets transformed into h("div", ["<"]); as I originally expected.
I haven't poked into how they are doing this… seems like something that ultimately relies on a lookup table.
Workaround
I am able to escape via string interpolation (e.g. ${'<'} instead of <). Changing the last line in my sample code to:
// …
console.log(html`<div>${'<'}</div>`)
Results in a VNode with .children = ["<"] as I need. Is this the recommended style?
- Lenguaje dominante
- JavaScript
- Estrellas
- 9k
- Forks
- 181
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de developit/htm
-
Sarthak Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 1/100
-
Tugas Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 10/100
-
Tugas Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 1/100
-
type checking templates Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
Todos los issues de developit/htm
Issues similares
-
awaiting triage bug Causes friction Hop Gui P1 P2 Transforms
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Improve Title Support Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
georgestephanis/p2026#40 ·
-
Enatega Customer and Rider app: Add-ons price is not visible to customer after order is placed. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Margaret-Petersen/food-delivery-app-clone-react-native#1981 ·