Exemple d’un composant YouTube Player
Cet exemple présente un composant simple servant à afficher une vidéo YouTube.
Description du composant
Le composant est une fonction nommée YouTubePlayer
acceptant 6 propriétés et retournant un élément HTML <iframe>
.
Les 6 propriétés sont :
videoId
: une donnée contenant une chaîne de caractères correspondant à un identifiant de vidéo YouTube et utilisée pour construire l’URL de l’attributsrc
de l’élément<iframe>
,id
: une chaîne de caractères utilisée comme valeur de l’attributid
de l’élément<iframe>
,classes
: une chaîne de caractères utilisée comme valeur de l’attributclass
de l’élément<iframe>
,width
: un nombre utilisé comme utilisé valeur de l’attributwidth
de l’élément<iframe>
,height
: un nombre utilisé comme utilisé valeur de l’attributheight
de l’élément<iframe>
,vars
: un objet qui peut contenir les paramètres supportés par l’API YouTube Player éventuellement utilisés pour construire l’URL de l’attributsrc
de l’élément<iframe>
.
Aucune de ces propriétés ne sont requises. Si la propriété videoId
n’est pas passée, l’élément <iframe>
sera vide, idem avec les propriétés width
et height
, le navigateur lui donnera une taille par défaut.
Code du composant
Le code du composant est représenté ici.
function YouTubePlayer({videoId, id, classes, width, height, vars = {}}) {
const {iframe} = Room.elements();
const src = () => {
let href = "";
if (Room.getData(videoId)) {
let url = new URL("https://www.youtube.com/embed/" + videoId);
Object.entries(vars).forEach(([k, v]) => url.searchParams.append(k, v));
href = url.href;
}
return href;
};
return iframe({
id,
class: classes,
width,
height,
src,
allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
allowfullscreen: "allowfullscreen",
loading: "lazy"
});
}
Le composant retourne un élément <iframe>
d’incorporation d’une vidéo YouTube à partir à minima d’un identifiant de vidéo. Il est à noter que l’attribut src
est défini comme une fonction dépendante de la propriété videoId
, donc si cette propriété a été définie par l’appelant du composant comme une donnée observable, l’attribut src
sera modifié automatiquement si la donnée change.
Utilisation du composant
Ce composant peut être ajouté dans un élément avec une ligne de code.
element.append(YouTubePlayer({videoId: "I6ezWUaHAgo", width: 960, height: 540}));
Ce qui donne le résultat suivant :
Dans l’exemple d’un Composant utilisant un autre composant, nous verrons qu’il est aussi possible de réutiliser ce composant dans un autre composant.
Dernière mise à jour :