Maison > Questions et réponses > le corps du texte
P粉2877263082023-08-31 10:43:01
Je me sens stupide après avoir passé autant de temps à résoudre ce problème, mais je voulais publier la réponse au cas où quelqu'un d'autre aurait un problème similaire.
Le problème est lié au processus de rendu de React. <Modal/>
est restitué à chaque fois que la requête multimédia est mise à jour, ce qui se produit lorsque l'orientation change sur les appareils mobiles. Ainsi, lorsque le modal est restitué lors du changement d'orientation, la vidéo se ferme. Je ne sais pas pourquoi la requête multimédia provoque un nouveau rendu (peut-être quelque chose à voir avec les paramètres des hooks ChakraUI), si quelqu'un a ce problème, il peut peut-être être développé. Cependant, le passage au statut a résolu le problème.
La solution est simple :
const [wIsSmallerThan48em] = useMediaQuery("(max-width: 48em)"); const [hIsSmallerThan30em] = useMediaQuery("(max-height: 30em)"); const [showModal, setShowModal] = useState(false); useEffect(() => { if (wIsSmallerThan48em || hIsSmallerThan30em){ setShowModal(true) } else { setShowModal(false) } }, [wIsSmallerThan48em, hIsSmallerThan30em]) // 在移动设备上无论是纵向还是横向都渲染“错误”模态框 if (showModal){ return ( <Modal> <Video src={MyVideo} /> </Modal> ) } else { return ( <Visualizer /> ) }