Rumah > Soal Jawab > teks badan
P粉2877263082023-08-31 10:43:01
Saya berasa bodoh selepas menghabiskan banyak masa untuk menyelesaikan masalah ini, tetapi saya ingin menyiarkan jawapan sekiranya orang lain mengalami masalah yang sama.
Masalah ini berkaitan dengan proses rendering React. <Modal/>
dipaparkan semula setiap kali pertanyaan media dikemas kini, yang berlaku apabila orientasi berubah pada peranti mudah alih. Jadi apabila modal memaparkan semula pada perubahan orientasi, video ditutup. Saya tidak pasti mengapa pertanyaan media menyebabkan render semula (mungkin ada kaitan dengan tetapan cangkuk ChakraUI), jika sesiapa mempunyai masalah ini mungkin ia boleh dihuraikan. Walau bagaimanapun, bertukar kepada status menyelesaikan masalah.
Penyelesaiannya mudah sahaja:
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 /> ) }