Je travaille sur une application d'agenda/calendrier avec une plage horaire variable. Pour afficher une ligne pour l'heure actuelle et des blocs pour les rendez-vous qui ont été pris, je dois calculer combien de pixels correspondent à une minute à l'intérieur de l'intervalle de temps donné.
Ainsi, par exemple : Si l'agenda commence à 7 heures du matin et se termine à 5 heures de l'après-midi, l'amplitude totale est de 10 heures. Disons que le corps du calendrier a une hauteur de 1000 pixels. Cela signifie que chaque heure représente 100 pixels et chaque minute 1,66 pixels.
Si l'heure actuelle est 3 heures de l'après-midi. Nous sommes à 480 minutes du début de l'ordre du jour. Cela signifie que la ligne indiquant l'heure actuelle doit se trouver à 796,8 pixels (480 * 1,66) du haut du corps du calendrier.
Les calculs ne posent pas de problème, mais la hauteur du corps de l'agenda en pose un. Je pensais utiliser une React Ref pour obtenir la hauteur mais j'obtiens une erreur : ref.current is null
Voici un peu de code :
class Calendar extends Component {
calendarBodyRef = React.createRef();
displayCurrentTimeLine = () => {
const bodyHeight = this.calendarBodyRef.current.clientHeight; // current is null
}
render() {
return (
<table>
<thead>{this.displayHeader()}</thead>
<tbody ref={this.calendarBodyRef}>
{this.displayBody()}
{this.displayCurrentTimeLine()}
</tbody>
</table>
);
}
}