Output yang tidak dijangka daripada fungsi dalam komponen React
P粉614840363
P粉614840363 2024-04-03 00:17:44
0
1
368

Saya mengimport kedua-dua imej ( IMGIMG2 )。 IMG 假设在视口宽度小于 600px 时显示,而如果视口宽度大于或等于 600px,则显示另一张。所以我添加了一个函数来检查视口宽度,然后它返回这两个图像之一,但问题是它只返回我放入函数中的第一个图像,即 IMG . Walaupun lebar port pandangan menjadi lebih besar daripada 600px, ia masih menunjukkan IMG dan bukannya IMG2. Nota: Saya boleh menyelesaikan masalah ini dengan hanya menggunakan pertanyaan media dan menetapkan paparan kepada Tiada, tetapi saya mahu tahu bagaimana untuk menyelesaikan masalah ini menggunakan React

.

Pautan ke semua kod saya dalam Github: https://github.com/Issamath/PerfumeProduct.com

import IMG from '../../assets/image-product-mobile.jpg'
import IMG2 from '../../assets/image-product-desktop.jpg'

const ProductImage = () => {
  function displayImage(){
    let vw = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);
    console.log(vw);
    if(vw < 600) {
     console.log(vw + "is smaller than 600");
     return (<img src={IMG} alt="" />);
    } else {
     console.log(vw + "is bigger than 600");
     return (<img src={IMG2} alt="" />);
    }
}
  return (
    <div className='container-img'>
      {displayImage()}
    </div>
  )
}

export default ProductImage
.container-img img {
    height: 15rem;
    width: 100%;
    background: white;
    border-radius: 0.8rem 0.8rem 0 0;
}

.container-img {
   
}

 /* -----------------for bigger phones------------------- */

@media screen and (min-width: 390px) {
    .container-img img {
        height: 20rem;
    }
}

P粉614840363
P粉614840363

membalas semua(1)
P粉401901266

Untuk melakukan ini dengan React, anda perlu melampirkan pada acara mengubah saiz dokumen.

Di bawah ialah contoh mudah menukar teks dan warna latar belakang pada saiz semula.

const {useEffect, useState} = React;

const getWidth = () => document.documentElement.clientWidth;

const ResizeCheck = () => {
  const [width, setWidth] = useState(getWidth());
  useEffect(() => {
    const resize = () => setWidth(getWidth());
    window.addEventListener('resize', resize);
    return () => window.removeEventListener('resize', resize);
  }, []);
  return 
{ width >= 600 ?
Greater than equal to 600
:
Less than 600
}
; } const root = ReactDOM.createRoot(document.querySelector('#mount')); root.render();
sssccc
sssccc

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan