Problème de compatibilité entre React 18 et une ancienne librairie jQuery - solutions ?

Python, JavaScript, C, PHP, algorithmes, IDE
mehdi2001
Messages : 599
Inscription : mar. mai 19, 2026 7:24 pm

Problème de compatibilité entre React 18 et une ancienne librairie jQuery - solutions ?

Message par mehdi2001 »

Bonjour, je dois maintenir une appli avec des composants React 18 mais qui utilise encore une vieille lib jQuery (v1.12) pour certains plugins. Depuis la mise à jour, j'ai des conflits de gestion du DOM. Des idées pour cohabiter proprement ?
le_julien
Messages : 280
Inscription : sam. sept. 28, 2024 7:24 pm

Re: Problème de compatibilité entre React 18 et une ancienne librairie jQuery - solutions ?

Message par le_julien »

J'ai eu le même problème ! La solution qui a marché pour moi : isoler les parties jQuery dans des composants spécifiques, avec useEffect pour l'init et le cleanup. Et surtout bien utiliser ReactDOM.createRoot au lieu du render classique.
admin_sys_gaming
Messages : 571
Inscription : sam. janv. 20, 2024 7:24 pm

Re: Problème de compatibilité entre React 18 et une ancienne librairie jQuery - solutions ?

Message par admin_sys_gaming »

Attention, jQuery et React qui manipulent le même DOM, c'est la catastrophe assurée... As-tu vraiment besoin de garder jQuery ? Beaucoup de plugins ont des équivalents React maintenant. Sinon, peut-être utiliser un iframe pour isoler complètement les parties jQuery ?
mehdi2001
Messages : 599
Inscription : mar. mai 19, 2026 7:24 pm

Re: Problème de compatibilité entre React 18 et une ancienne librairie jQuery - solutions ?

Message par mehdi2001 »

Merci pour les suggestions. Malheureusement je dois garder jQuery pour un plugin de calendrier très custom qui n'a pas d'équivalent React (et le réécrire prendrait des semaines). Je vais tenter l'isolation avec useEffect, mais j'ai peur des fuites mémoires...
seb_tech
Messages : 653
Inscription : mar. juil. 11, 2023 7:24 pm

Re: Problème de compatibilité entre React 18 et une ancienne librairie jQuery - solutions ?

Message par seb_tech »

J'ai une appli en prod avec le même cas de figure. Ce qui marche bien : 1) Charger jQuery en mode noConflict, 2) Utiliser des portals React pour les zones avec jQuery, 3) Bien détacher tous les event listeners dans le cleanup. Ça fait 8 mois que ça tourne sans souci.
mehdi2001
Messages : 599
Inscription : mar. mai 19, 2026 7:24 pm

Re: Problème de compatibilité entre React 18 et une ancienne librairie jQuery - solutions ?

Message par mehdi2001 »

@89 Merci pour le retour d'expérience ! Le mode noConflict + les portals semblent effectivement une piste solide. Je vais tester ça dès demain. Vous utilisez quel système de build ? Webpack ou Vite ?
Répondre