2
votes

Comment insérer du HTML dans des chaînes littérales de modèle?

Dans React, je veux pouvoir utiliser des mots de style dans une chaîne qui est définie dans une variable à l'aide de littéraux de modèle. Pour cela, j'utilise un style juste pour ce mot. J'obtiens une erreur d'utilisation HTMLIntrinsic.

Remarque - Les solutions données dans SO aux questions liées à cela ne résolvent pas le problème que j'ai. Veuillez vérifier le code.

Comment contourner ce problème

J'ai essayé d'utiliser dangerouslyinsertHTML, mais pas une solution recommandée.

    //Actual code
    const temperature = "22";
    const list = {
       item: `The temperature is ${temperature}`
    }

    //To style it-
    const temperature = "22";
    const list = {
       item: `The temperature is <span style={{color:'red'}}>${temperature}</span>`
    }

    //And the above list.item is inserted inside JSX like -
    return (
      <div>{list.item}</div>
    )

Le la température (22) doit être stylisée.


0 commentaires

3 Réponses :


2
votes

Au lieu de la chaîne de modèle, vous pouvez utiliser des éléments JSX pour générer du HTML comme d'habitude, placés à côté de vos éléments de texte. Exemple:

item: (
  <>
    The temperature is
    <span style={{color:'red'}}>
      {temperature}
    </span>
  </>
)

J'utilise un Fragment pour encapsulez le texte et les éléments ensemble, mais vous pouvez utiliser quelque chose d'autre comme un div si vous souhaitez également styliser le wrapper.


0 commentaires

0
votes

Vous ne pouvez pas utiliser React dans un template-literal comme ça car le composant React est un objet. Son utilisation avec template-literal se traduira par cet [objet objet] . Je recommande donc d'utiliser une autre manière, par exemple la solution de @richardo


0 commentaires

0
votes

Vous pouvez rendre cela aussi simple que ceci, SI vous êtes d'accord pour ne pas avoir d'objet comme vous l'avez défini

return(
  <div>The temperature is <span style={{color: 'red'}}>{temperature}</span></div>
)


0 commentaires